# Trait core::ops::Drop [−] [src]

    pub trait Drop {
        fn drop(&mut self);
    }

The `Drop` trait is used to run some code when a value goes out of scope. This is sometimes called a 'destructor'.

# Examples

A trivial implementation of `Drop`. The `drop` method is called when `_x` goes out of scope, and therefore `main` prints `Dropping!`.

struct HasDrop; impl Drop for HasDrop { fn drop(&mut self) { println!("Dropping!"); } } fn main() { let _x = HasDrop; }

    struct HasDrop;

    impl Drop for HasDrop {
        fn drop(&mut self) {
            println!("Dropping!");
        }
    }

    fn main() {
        let _x = HasDrop;
    }

## Required Methods

### `fn drop(&mut self)`

A method called when the value goes out of scope.

When this method has been called, `self` has not yet been deallocated. If it were, `self` would be a dangling reference.

After this function is over, the memory of `self` will be deallocated.

# Panics

Given that a `panic!` will call `drop()` as it unwinds, any `panic!` in a `drop()` implementation will likely abort.

## Implementors

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize`)