Rust logo
Rust 1.79.0-nightly
e3181b091

Drop

There is a new edition of the book and this is an old link.

Drop lets us customize what happens when a value is about to go out of scope.

struct CustomSmartPointer {
    data: String,
}

impl Drop for CustomSmartPointer {
    fn drop(&mut self) {
        println!("Dropping CustomSmartPointer with data `{}`!", self.data);
    }
}

fn main() {
    let c = CustomSmartPointer { data: String::from("my stuff") };
    let d = CustomSmartPointer { data: String::from("other stuff") };
    println!("CustomSmartPointers created.");
}
Run

Here are the relevant sections in the new and old books: