Module deadpool::managed

source ·
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.


use deadpool::managed;

enum Error { Fail }

struct Computer {}

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

struct Manager {}

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::Metrics) -> managed::RecycleResult<Error> {

type Pool = managed::Pool<Manager>;

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.



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




  • Manager responsible for creating new Objects or recycling existing ones.

Type Aliases§