Drop

https://doc.rust-lang.org/book/drop.html

Dropというtraitsについて。 変数が消える時に、何かやらせたい時に使う。デストラクタってやつですね。

struct HasDrop;

impl Drop for HasDrop {
    fn drop(&mut self) {
        println!("Dropping!");
    }
}

struct Firework {
    strength: i32,
}

impl Drop for Firework {
    fn drop(&mut self) {
        println!("BOOM times {}!!!", self.strength);
    }
}

fn main() {
    println!("one");
    {
        let x = HasDrop;
        println!("two");
    }
    println!("three");

    let firecracker = Firework { strength: 1 };
    let tnt = Firework { strength: 100 };
}
$ cargo run # warning等は省略
one
two
Dropping!
three
BOOM times 100!!!
BOOM times 1!!!