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§