Этот код выходит из строя, как ожидалось, в let c = a; с ошибкой компиляции "использование перемещенного значения: a":
fn main() {
let a: &mut i32 = &mut 0;
let b = a;
let c = a;
}
a перемещается в b и больше не доступен для назначения c. Пока что так хорошо.
Однако, если я просто комментирую тип b и оставляю все остальное в покое:
fn main() {
let a: &mut i32 = &mut 0;
let b: &mut i32 = a;
let c = a;
}
код снова сработает при let c = a;
Но на этот раз с очень другим сообщением об ошибке: "не может выйти из a, потому что он заимствован... Заем *a встречается здесь: let b: &mut i32 = a;"
Итак, если я просто комментирую тип b: нет перемещения a в b, но вместо этого "re" -borrow *a?
Что мне не хватает?
Приветствия.