r2d2
A generic connection pool for Rust.
Opening a new database connection every time one is needed is both inefficient and can lead to resource exhaustion under high traffic conditions. A connection pool maintains a set of open connections to a database, handing them out for repeated use.
r2d2 is agnostic to the connection type it is managing. Implementors of the
ManageConnection
trait provide the database-specific logic to create and
check the health of connections.
A (possibly not exhaustive) list of adaptors for different backends:
Backend | Adaptor Crate |
---|---|
rust-postgres | r2d2-postgres |
redis-rs | r2d2-redis |
rust-mysql-simple | r2d2-mysql |
rusqlite | r2d2-sqlite |
rusted-cypher | r2d2-cypher |
diesel | r2d2-diesel |
Example
Using an imaginary "foodb" database.
use thread;
extern crate r2d2;
extern crate r2d2_foodb;