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 数据库接口
每月65次下载
91KB
1.5K SLoC
Deadpool for R2D2 Managers
Deadpool是一个Dead simple async pool,用于连接和任何类型的对象。
功能
功能 | 描述 | 额外依赖 | 默认 |
---|---|---|---|
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(())
}
许可
根据以下任一许可授权
- Apache License, Version 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- 麻省理工学院许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
由您选择。
依赖项
~3-14MB
~164K SLoC