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