Available on crate feature managed only.
Expand description

Managed version of the pool.

“Managed” means that it requires a Manager which is responsible for creating and recycling objects as they are needed.

Example

use async_trait::async_trait;
use deadpool::managed;

#[derive(Debug)]
enum Error { Fail }

struct Computer {}

impl Computer {
    async fn get_answer(&self) -> i32 {
        42
    }
}

struct Manager {}

#[async_trait]
impl managed::Manager for Manager {
    type Type = Computer;
    type Error = Error;

    async fn create(&self) -> Result<Computer, Error> {
        Ok(Computer {})
    }
    async fn recycle(&self, conn: &mut Computer) -> managed::RecycleResult<Error> {
        Ok(())
    }
}

type Pool = managed::Pool<Manager>;

#[tokio::main]
async fn main() {
    let mgr = Manager {};
    let pool = Pool::builder(mgr).max_size(16).build().unwrap();
    let mut conn = pool.get().await.unwrap();
    let answer = conn.get_answer().await;
    assert_eq!(answer, 42);
}

For a more complete example please see deadpool-postgres crate.

Re-exports

pub use crate::Status;

Modules

This module contains all things that should be reexported by backend implementations in order to avoid direct dependencies on the deadpool crate itself.

syncDeprecated

Helpers for writing pools for objects that don’t support async and need to be run inside a thread.

Structs

Statistics regarding an object returned by the pool

Wrapper around the actual pooled object which implements Deref, DerefMut and Drop traits.

Generic object and connection pool.

Builder for Pools.

Pool configuration.

Timeouts when getting Objects from a Pool.

Enums

Possible errors returned when PoolBuilder::build() fails to build a Pool.

This error is used when building pools via the config create_pool methods.

Wrapper for hook functions

Error structure which which can abort the creation and recycling of objects.

Possible errors returned by hooks

Possible errors returned by Pool::get() method.

Possible errors returned by the Manager::recycle() method.

Possible steps causing the timeout in an error returned by Pool::get() method.

Traits

Manager responsible for creating new Objects or recycling existing ones.

Type Definitions

The boxed future that should be returned by async hooks

The result returned by hooks

Result type of the Manager::recycle() method.