16 stable releases (15 major)

25.0.0 Jul 8, 2024
24.0.0 Jul 18, 2023
23.0.0 Dec 12, 2022
22.0.0 Oct 25, 2022
0.2.0 Jul 25, 2015

#1022 in Database interfaces

Download history 1261/week @ 2024-11-29 1131/week @ 2024-12-06 1426/week @ 2024-12-13 1040/week @ 2024-12-20 741/week @ 2024-12-27 965/week @ 2025-01-03 1387/week @ 2025-01-10 2182/week @ 2025-01-17 1990/week @ 2025-01-24 2061/week @ 2025-01-31 2186/week @ 2025-02-07 2855/week @ 2025-02-14 2026/week @ 2025-02-21 1761/week @ 2025-02-28 977/week @ 2025-03-07 1253/week @ 2025-03-14

6,241 downloads per month
Used in 18 crates (15 directly)

MIT license

7KB
64 lines

r2d2_mysql

mysql support library for the r2d2 connection pool.

crates.io Documentation Version License Download

Install

Include r2d2_mysql in the [dependencies] section of your Cargo.toml:

[dependencies]
r2d2_mysql = "24"

Usage

use std::{env, sync::Arc, thread};

use r2d2_mysql::{
    mysql::{prelude::*, Opts, OptsBuilder},
    r2d2, MySqlConnectionManager,
};

fn main() {
    let url = env::var("DATABASE_URL").unwrap();
    let opts = Opts::from_url(&url).unwrap();
    let builder = OptsBuilder::from_opts(opts);
    let manager = MySqlConnectionManager::new(builder);
    let pool = Arc::new(r2d2::Pool::builder().max_size(4).build(manager).unwrap());

    let mut tasks = vec![];

    for _ in 0..3 {
        let pool = pool.clone();
        let th = thread::spawn(move || {
            let mut conn = pool.get().expect("error getting connection from pool");

            let _ = conn
                .query("SELECT version()")
                .map(|rows: Vec<String>| rows.is_empty())
                .expect("error executing query");
        });

        tasks.push(th);
    }

    for th in tasks {
        let _ = th.join();
    }
}

Dependencies

~14–28MB
~454K SLoC