Почему это значение не повышается до значения l, как указано в ссылке?

Rust Reference говорит:

Левый операнд выражения присваивания или составного присваивания является lvalue-контекстом, как и единственный операнд унарного заимствования.

[...]

Когда rvalue используется в контексте lvalue, вместо него создается временное безымянное lvalue.

Это продвижение rvalue, очевидно, работает с заимствованиями:

let ref_to_i32 = &27;  // a temporary i32 variable with value 27 is created

Но это, кажется, не работает в задании (хотя ссылка говорит овсе lvalue контексты, а не просто заимствования)

27 = 28;   // error[E0070]: invalid left-hand side expression

описание ошибки E0070 не упоминает об этом промоушене. Является ли это ошибкой в ​​ссылке или действительно есть какой-то способ вызвать повышение значения с помощью выражений присваивания или составного присваивания?

Существует третий тип контекста lvalue, который ссылка также описывает неправильно. Всякий раз, когда есть шаблон сref в нем привязка левого значения к этому шаблону является контекстом lvalue. Оказывается, продвижение работает в этом случае:

let ref x = 3;  // works

Очевидно, что продвижение не работает только для (составных) заданий?

Ответы на вопрос(1)

Ваш ответ на вопрос