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
deadpool
crate itself.
Structs§
- Statistics regarding an object returned by the pool
- Generic object and connection pool.
- Builder for
Pool
s. Pool
configuration.
Enums§
- Possible errors returned when
PoolBuilder::build()
fails to build aPool
. - This error is used when building pools via the config
create_pool
methods. - Wrapper for hook functions
- Error which is returned by
pre_create
,pre_recycle
andpost_recycle
hooks. - 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
Object
s 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.