A variável movida ainda está sendo emprestada após chamar `drop`?
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
O compilador sabedrop()
gotasx
(como é evidente no erro no código comentado), mas ainda acha que a variável está tomando emprestado dea
! Isso é injusto!
Caso isso seja considerado um dos inúmeros enganadores deferrugem-ferrugem / ferrugem # 6393 (que agora é rastreado porferrugem-lang / rfcs # 811?) Mas a discussão parece estar centrada em fazer&mut self
e&self
coexistir em um único bloco.