## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Error code E0040

It is not allowed to manually call destructors in Rust.

Erroneous code example:

    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!
    }