Introduction Drop lets you customize what happens when a value is about to go out of scope, ie: to release resources like files or network connections. Example 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."); }