AsyncDrop in std::future - Rust
Description: Async version of Drop trait.

## AsyncDrop

# Trait AsyncDrop

Source

    pub trait AsyncDrop {
        // Required method
        async fn drop(self: Pin<&mut Self>);
    }

🔬This is a nightly-only experimental API. (`async_drop` #126482)
Expand description

Async version of Drop trait.

When a value is no longer needed, Rust will run a “destructor” on that value. The most common way that a value is no longer needed is when it goes out of scope. Destructors may still run in other circumstances, but we’re going to focus on scope for the examples here. To learn about some of those other cases, please see the reference section on destructors.

### §`Copy` and (`Drop`|`AsyncDrop`) are exclusive

You cannot implement both `Copy` and (`Drop`|`AsyncDrop`) on the same type. Types that are `Copy` get implicitly duplicated by the compiler, making it very hard to predict when, and how often destructors will be executed. As such, these types cannot have destructors.

## Required Methods§

Source

#### async fn drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (`async_drop` #126482)

Executes the async destructor for this type.

This method is called implicitly when the value goes out of scope, and cannot be called explicitly.

When this method has been called, `self` has not yet been deallocated. That only happens after the method is over.

##### §Panics

## Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

## Implementors§