Não entendo como o seguinte código Rust libera essas variáveis.
struct A(&'static str);
impl A {
fn as_ref(&self) -> &Self { &self }
}
impl Drop for A {
fn drop(&mut self) {
print!("{}", self.0);
}
}
fn main() {
let a = A("X");
let a = A("Y").as_ref();
print!("Z");
}
Por que isso imprime YZX no final?