r2d2-mysql

rust-mysql-simple support library for the r2d2 connection pool. Documentation is available at http://outersky.github.io/r2d2-mysql/doc/v3.0.0/r2d2_mysql

Install

Just include another [dependencies] section into your Cargo.toml:

toml [dependencies] r2d2_mysql="*"

Example

```rust,norun extern crate mysql; extern crate r2d2mysql; extern crate r2d2;

use std::env; use std::sync::Arc; use std::thread; use mysql::{Opts,OptsBuilder}; use mysql::prelude::Queryable; use r2d2_mysql::MysqlConnectionManager;

fn main() { let url = env::var("DATABASEURL").unwrap(); let opts = Opts::fromurl(&url).unwrap(); let builder = OptsBuilder::fromopts(opts); let manager = MysqlConnectionManager::new(builder); let pool = Arc::new(r2d2::Pool::builder().maxsize(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()
                .map_err(|err| {
                    println!(
                        "get connection from pool error in line:{} ! error: {:?}",
                        line!(),
                        err
                    )
                })
                .unwrap();
            let _ = conn.query("SELECT version()").map(|_: Vec<String>| ()).map_err(|err| {
                println!("execute query error in line:{} ! error: {:?}", line!(), err)
            });
        });
        tasks.push(th);
    }

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

} ```