Trait deadpool::managed::Manager

source ·
pub trait Manager: Sync + Send {
    type Type;
    type Error;

    // Required methods
    fn create<'life0, 'async_trait>(
        &'life0 self
    ) -> Pin<Box<dyn Future<Output = Result<Self::Type, Self::Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn recycle<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        obj: &'life1 mut Self::Type,
        metrics: &'life2 Metrics
    ) -> Pin<Box<dyn Future<Output = RecycleResult<Self::Error>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait;

    // Provided method
    fn detach(&self, _obj: &mut Self::Type) { ... }
}
Available on crate feature managed only.
Expand description

Manager responsible for creating new Objects or recycling existing ones.

Required Associated Types§

source

type Type

Type of Objects that this Manager creates and recycles.

source

type Error

Error that this Manager can return when creating and/or recycling Objects.

Required Methods§

source

fn create<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<Self::Type, Self::Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,

Creates a new instance of Manager::Type.

source

fn recycle<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, obj: &'life1 mut Self::Type, metrics: &'life2 Metrics ) -> Pin<Box<dyn Future<Output = RecycleResult<Self::Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Tries to recycle an instance of Manager::Type.

Errors

Returns Manager::Error if the instance couldn’t be recycled.

Provided Methods§

source

fn detach(&self, _obj: &mut Self::Type)

Detaches an instance of Manager::Type from this Manager.

This method is called when using the Object::take() method for removing an Object from a Pool. If the Manager doesn’t hold any references to the handed out Objects then the default implementation can be used which does nothing.

Implementors§