¿La variable movida sigue tomando prestado después de llamar a '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

El compilador sabedrop() gotasx (como se desprende del error en el código comentado) pero aún cree que la variable está tomando prestado dea! ¡Esto es injusto!

¿Debería considerarse esto como uno de los numerosos engaños deRust-Lang / Rust # 6393 (que ahora es rastreado porrust-lang / rfcs # 811?) Pero la discusión allí parece centrarse en hacer&mut self y&self coexisten en un solo bloque.

Respuestas a la pregunta(2)

Su respuesta a la pregunta