Этот код выходит из строя, как ожидалось, в 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
?
Что мне не хватает?
Приветствия.