5个版本 (3个破坏性更新)

0.4.1 2024年5月4日
0.4.0 2024年3月31日
0.3.0 2023年9月26日
0.2.0 2021年10月26日
0.1.0 2021年10月18日

#2740 in 数据库接口

Download history 195/week @ 2024-05-03 10/week @ 2024-05-10 59/week @ 2024-05-17 48/week @ 2024-05-24 33/week @ 2024-05-31 14/week @ 2024-06-07 16/week @ 2024-06-14 12/week @ 2024-06-21 6/week @ 2024-06-28 22/week @ 2024-07-05 3/week @ 2024-07-12 7/week @ 2024-07-19 49/week @ 2024-07-26 7/week @ 2024-08-02 2/week @ 2024-08-09 6/week @ 2024-08-16

每月65次下载

MIT/Apache

91KB
1.5K SLoC

Deadpool for R2D2 Managers 最新版本 不安全被禁止 Rust 1.75+

Deadpool是一个Dead simple async pool,用于连接和任何类型的对象。

此crate为deadpool管理器实现了r2d2管理器。

功能

功能 描述 额外依赖 默认
rt_tokio_1 启用对tokio crate的支持 deadpool/rt_tokio_1
rt_async-std_1 启用对async-std crate的支持 deadpool/rt_async-std_1
serde 启用对serde crate的支持 deadpool/serde
tracing 通过在interact()调用中传播Spans来启用对tracing的支持。如果您使用tracing crate并希望在interact()调用中获取有用的跟踪信息,请启用此功能。 deadpool-sync/tracing, tracing

示例

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(&env::var("PG__HOST").unwrap());
    pg_config.user(&env::var("PG__USER").unwrap());
    pg_config.password(&env::var("PG__PASSWORD").unwrap());
    pg_config.dbname(&env::var("PG__DBNAME").unwrap());
    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(())
}

许可

根据以下任一许可授权

由您选择。

依赖项

~3-14MB
~164K SLoC