2 unstable releases

0.2.0 Oct 26, 2021
0.1.0 Oct 18, 2021

#118 in Database implementations

Download history 1/week @ 2022-02-01 1/week @ 2022-02-08 2/week @ 2022-02-15 2/week @ 2022-02-22 1/week @ 2022-03-01 1/week @ 2022-03-08 8/week @ 2022-03-15 7/week @ 2022-03-22 3/week @ 2022-04-05 1/week @ 2022-04-12 12/week @ 2022-04-26 12/week @ 2022-05-03 31/week @ 2022-05-10

56 downloads per month

MIT/Apache

93KB
1.5K SLoC

Deadpool for R2D2 Managers Latest Version Unsafe forbidden Rust 1.54+

Deadpool is a dead simple async pool for connections and objects of any type.

This crate implements a deadpool manager for r2d2 managers.

Features

Feature Description Extra dependencies Default
rt_tokio_1 Enable support for tokio crate deadpool/rt_tokio_1 yes
rt_async-std_1 Enable support for async-std crate deadpool/rt_async-std_1 no
serde Enable support for serde crate deadpool/serde no

Example

use std::env;

use deadpool_r2d2::Runtime;
use r2d2_postgres::postgres::Error as PgError;

type PgManager = deadpool_r2d2::Manager<
    r2d2_postgres::PostgresConnectionManager<r2d2_postgres::postgres::NoTls>,
>;
type PgPool = deadpool_r2d2::Pool<PgManager>;

fn create_pool(max_size: usize) -> PgPool {
    let mut pg_config = r2d2_postgres::postgres::Config::new();
    pg_config.host_path("/run/postgresql");
    pg_config.user(&env::var("USER").unwrap());
    pg_config.dbname("deadpool");
    let r2d2_manager =
        r2d2_postgres::PostgresConnectionManager::new(pg_config, r2d2_postgres::postgres::NoTls);
    let manager = PgManager::new(r2d2_manager, Runtime::Tokio1);
    let pool = PgPool::builder(manager)
        .max_size(max_size)
        .build()
        .unwrap();
    pool
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let pool = create_pool(2);
    let client = pool.get().await.unwrap();
    let answer: i32 = client
        .interact(|client| client.query_one("SELECT 42", &[]).map(|row| row.get(0)))
        .await??;
    assert_eq!(answer, 42);
    Ok(())
}

License

Licensed under either of

at your option.

Dependencies

~3.5MB
~62K SLoC