18 releases

0.9.0 Jun 25, 2025
0.8.0 Jan 22, 2023
0.7.0 Jan 13, 2021
0.6.0 Nov 14, 2020
0.3.0 Nov 30, 2019

#44 in #async-pool

Download history 120/week @ 2025-08-24 197/week @ 2025-08-31 161/week @ 2025-09-07 168/week @ 2025-09-14 127/week @ 2025-09-21 111/week @ 2025-09-28 81/week @ 2025-10-05 81/week @ 2025-10-12 124/week @ 2025-10-19 211/week @ 2025-10-26 154/week @ 2025-11-02 116/week @ 2025-11-09 137/week @ 2025-11-16 212/week @ 2025-11-23 84/week @ 2025-11-30 76/week @ 2025-12-07

514 downloads per month
Used in 6 crates (3 directly)

MIT/Apache

14KB

mobc-postgres

Build Status crates.io

Documentation

Example

use mobc::Pool;
use std::str::FromStr;
use std::time::Instant;
use mobc_postgres::PgConnectionManager;
use tokio_postgres::Config;
use tokio_postgres::NoTls;


#[tokio::main]
async fn main() {
    let config = Config::from_str("postgres://user:passwd@localhost:5432").unwrap();
    let manager = PgConnectionManager::new(config, NoTls);
    let pool = Pool::builder().max_open(20).build(manager);
    const MAX: usize = 5000;

    let now = Instant::now();
    let (tx, mut rx) = tokio::sync::mpsc::channel::<usize>(16);
    for i in 0..MAX {
        let pool = pool.clone();
        let mut tx_c = tx.clone();
        tokio::spawn(async move {
            let client = pool.get().await.unwrap();
            let rows = client.query("SELECT 1 + 2", &[]).await.unwrap();
            let value: i32 = rows[0].get(0);
            assert_eq!(value, 3);
            tx_c.send(i).await.unwrap();
        });
    }
    for _ in 0..MAX {
        rx.recv().await.unwrap();
    }

    println!("cost: {:?}", now.elapsed());
}

Dependencies

~9–22MB
~267K SLoC