Expand description
Managed version of the pool.
“Managed” means that it requires a Manager which is responsible for
creating and recycling objects as they are needed.
§Example
use deadpool::managed;
#[derive(Debug)]
enum Error { Fail }
struct Computer {}
impl Computer {
async fn get_answer(&self) -> i32 {
42
}
}
struct Manager {}
impl managed::Manager for Manager {
type Type = Computer;
type Error = Error;
async fn create(&self) -> Result<Computer, Error> {
Ok(Computer {})
}
async fn recycle(&self, conn: &mut Computer, _: &managed::Metrics) -> managed::RecycleResult<Error> {
Ok(())
}
}
type Pool = managed::Pool<Manager>;
#[tokio::main]
async fn main() {
let mgr = Manager {};
let pool = Pool::builder(mgr).max_size(16).build().unwrap();
let mut conn = pool.get().await.unwrap();
let answer = conn.get_answer().await;
assert_eq!(answer, 42);
}For a more complete example please see
deadpool-postgres crate.
Re-exports§
pub use crate::Status;
Modules§
- This module contains all things that should be reexported by backend implementations in order to avoid direct dependencies on the
deadpoolcrate itself.
Structs§
- Statistics regarding an object returned by the pool
- Generic object and connection pool.
- Builder for
Pools. Poolconfiguration.- This is the result returned by
Pool::retain
Enums§
- Possible errors returned when
PoolBuilder::build()fails to build aPool. - This error is used when building pools via the config
create_poolmethods. - Wrapper for hook functions
- Error which is returned by
pre_create,pre_recycleandpost_recyclehooks. - Possible errors returned by
Pool::get()method. - Possible errors returned by the
Manager::recycle()method. - Possible steps causing the timeout in an error returned by
Pool::get()method.
Traits§
- Manager responsible for creating new
Objects or recycling existing ones.
Type Aliases§
- The boxed future that should be returned by async hooks
- The result returned by hooks
- Result type of the
Manager::recycle()method.