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

    fn create<'life0, 'async_trait>(
        &'life0 self
    ) -> Pin<Box<dyn Future<Output = Result<Self::Type, Self::Error>> + Send + 'async_trait>>
        'life0: 'async_trait,
        Self: 'async_trait
; fn recycle<'life0, 'life1, 'async_trait>(
        &'life0 self,
        obj: &'life1 mut Self::Type
    ) -> Pin<Box<dyn Future<Output = RecycleResult<Self::Error>> + Send + 'async_trait>>
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: 'async_trait
; 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

Type of Objects that this Manager creates and recycles.

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

Required Methods

Creates a new instance of Manager::Type.

Tries to recycle an instance of Manager::Type.


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

Provided Methods

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.