[−][src]Crate deadpool
Deadpool is a dead simple async pool for connections and objects of any type.
Example
use async_trait::async_trait; #[derive(Debug)] enum Error { Fail } struct Connection {} type Pool = deadpool::Pool<Connection, Error>; impl Connection { async fn new() -> Result<Self, Error> { Ok(Connection {}) } async fn check_health(&self) -> bool { true } async fn do_something(&self) -> String { "Hooray!".to_string() } } struct Manager {} #[async_trait] impl deadpool::Manager<Connection, Error> for Manager { async fn create(&self) -> Result<Connection, Error> { Connection::new().await } async fn recycle(&self, conn: &mut Connection) -> deadpool::RecycleResult<Error> { if conn.check_health().await { Ok(()) } else { Err(Error::Fail.into()) } } } #[tokio::main] async fn main() { let mgr = Manager {}; let pool = Pool::new(mgr, 16); let mut conn = pool.get().await.unwrap(); let value = conn.do_something().await; assert_eq!(value, "Hooray!".to_string()); }
For a more complete example please see
deadpool-postgres
Structs
Object | A wrapper around the actual pooled object which implements the traits
|
Pool | A generic object and connection pool. |
PoolConfig | Pool configuration |
Status | The current pool status. |
Timeouts | Timeouts when getting objects from the pool |
Enums
PoolError | Error structure for |
RecycleError | This error is returned by the |
TimeoutType | When |
Traits
Manager | This trait is used to |
Type Definitions
RecycleResult | Result type for the recycle function |