pub trait BackdropStrategy<T> {
    // Required method
    fn execute(droppable: T);
}
Expand description

The strategy to use to drop T.

Most implementations of this trait place additional requirements on T. For instance, all strategies that move T to a separate thread to be dropped there introduce a T: Send + 'static bound.

Required Methods§

source

fn execute(droppable: T)

Called whenever T should be dropped.

The trivial implementation (and indeed, TrivialStrategy is implemented this way) is to do nothing. Then T will just directly be dropped right here, right now, because it is passed by value:

pub struct TrivialStrategy();

impl<T> BackdropStrategy<T> for TrivialStrategy {
   fn execute(_droppable: T) {
   }
}

Or, for clarity:

pub struct TrivialStrategy();

impl<T> BackdropStrategy<T> for TrivialStrategy {
   fn execute(droppable: T) {
       core::mem::drop(droppable)
   }
}

But obviously that is not very exciting/helpful. Most implementations move the T to somewhere else somehow, and then it will be dropped there.

To give you another example, here is how ThreadStrategy works:

pub struct ThreadStrategy();

impl<T: Send + 'static> BackdropStrategy<T> for ThreadStrategy {
    fn execute(droppable: T) {
        std::thread::spawn(|| {
            core::mem::drop(droppable);
        });
    }
}

Implementors§

source§

impl<T> BackdropStrategy<T> for LeakStrategy

source§

impl<T> BackdropStrategy<T> for TrivialStrategy

source§

impl<T, InnerStrategy> BackdropStrategy<T> for DebugStrategy<InnerStrategy>where T: Debug, InnerStrategy: BackdropStrategy<T>,

Available on crate feature std only.
source§

impl<T: 'static> BackdropStrategy<T> for TrashQueueStrategy

Available on crate feature alloc only.
source§

impl<T: Send + 'static> BackdropStrategy<T> for ThreadStrategy

Available on crate feature std only.
source§

impl<T: Send + 'static> BackdropStrategy<T> for TokioBlockingTaskStrategy

Available on crate feature tokio only.
source§

impl<T: Send + 'static> BackdropStrategy<T> for TokioTaskStrategy

Available on crate feature tokio only.
source§

impl<T: Send + 'static> BackdropStrategy<T> for TrashThreadStrategy

Available on crate feature std only.
source§

impl<T: Send + 'static> BackdropStrategy<T> for GlobalTrashThreadStrategy

Available on crate feature std only.