Перейти к содержанию

Сахар компилятора

Posted on:10 февраля 2023 г. at 16:32

Example Dynamic OG Image link Если что-то работает, но вы думаете, что не должно работать в настоящий момент, это может быть связано с одним из следующих.

Преобразования - ослабляет типы для соответствия сигнатуре, например, &mut T к &T, преобразования типов.

Разименования - разыменование x: T до \* x, \*\*x, … совместимы с некоторыми назначениями S.

Прелюдия - автоматический импорт основных элементов, например, Option, drop(),…

Одолжение - поскольку x: &mut T не может быть скопировано, перемещает в новый &mut \*x.

Время жизни - позволяет записать f(x: &T) вместо f<'a>(x: &'a T) для краткости.

Разрешения метода - разыменовывает или заимствует х до тех пор, пока не сработает x.f().

Сопоставления шаблонов - многократно отменяет проверку и добавляет к привязкам ref и ref mut.

Статическое повышение R-value - делает ссылки на статические константы, например, &42, &None, &mut \[\].

Двойные определения - определение одного (например, структуры S(u8)) неявно определяет другое (например, fn S).

Примечание: эти особенности облегчают вашу жизнь, используя Rust, но мешают ее усвоению. Если вы хотите развить подлинное понимание, потратьте дополнительное время на их изучение.