| It is not allowed to manually call destructors in Rust. | |
| Erroneous code example: | |
| ```compile_fail,E0040 | |
| struct Foo { | |
| x: i32, | |
| } | |
| impl Drop for Foo { | |
| fn drop(&mut self) { | |
| println!("kaboom"); | |
| } | |
| } | |
| fn main() { | |
| let mut x = Foo { x: -7 }; | |
| x.drop(); // error: explicit use of destructor method | |
| } | |
| ``` | |
| It is unnecessary to do this since `drop` is called automatically whenever a | |
| value goes out of scope. However, if you really need to drop a value by hand, | |
| you can use the `std::mem::drop` function: | |
| ``` | |
| struct Foo { | |
| x: i32, | |
| } | |
| impl Drop for Foo { | |
| fn drop(&mut self) { | |
| println!("kaboom"); | |
| } | |
| } | |
| fn main() { | |
| let mut x = Foo { x: -7 }; | |
| drop(x); // ok! | |
| } | |
| ``` |