mobc 0.9.0

A generic connection pool with async/await support
Documentation
mod foodb;

use foodb::FooManager;
use mobc::Pool;
use std::time::Instant;

#[tokio::main]
async fn main() {
    let pool = Pool::builder().max_open(15).build(FooManager);
    let num: usize = 10000;
    let (tx, mut rx) = tokio::sync::mpsc::channel::<()>(16);

    let now = Instant::now();
    for _ in 0..num {
        let pool = pool.clone();
        let tx = tx.clone();
        tokio::spawn(async move {
            let conn = pool.get().await.unwrap();
            let name = conn.query().await;
            assert_eq!(name, "PONG".to_string());
            tx.send(()).await.unwrap();
        });
    }

    for _ in 0..num {
        rx.recv().await.unwrap();
    }

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