"не волшебство"
fn main() {
let mut x: Vec<&i32> = vec![];
let a = 1;
x.push(&a);
drop(x);
// x.len(); // error[E0382]: use of moved value: `x`
} // `a` dropped here while still borrowed
лятор знаетdrop()
каплиx
(как видно из ошибки в закомментированном коде), но все еще думает, что переменная заимствует изa
! Это нечестно!
Должно ли это рассматриваться как один из многочисленных обманщиковржавчины языки / ржавчины # 6393 (который сейчас отслеживаетсяржавчины языки / РЛК # 811?) Но обсуждение там, кажется, сосредоточено на&mut self
а также&self
сосуществовать в одном блоке.