deadpool/managed/
mod.rs

1//! Managed version of the pool.
2//!
3//! "Managed" means that it requires a [`Manager`] which is responsible for
4//! creating and recycling objects as they are needed.
5//!
6//! # Example
7//!
8//! ```rust
9//! use deadpool::managed;
10//!
11//! #[derive(Debug)]
12//! enum Error { Fail }
13//!
14//! struct Computer {}
15//!
16//! impl Computer {
17//!     async fn get_answer(&self) -> i32 {
18//!         42
19//!     }
20//! }
21//!
22//! struct Manager {}
23//!
24//! impl managed::Manager for Manager {
25//!     type Type = Computer;
26//!     type Error = Error;
27//!
28//!     async fn create(&self) -> Result<Computer, Error> {
29//!         Ok(Computer {})
30//!     }
31//!     async fn recycle(&self, conn: &mut Computer, _: &managed::Metrics) -> managed::RecycleResult<Error> {
32//!         Ok(())
33//!     }
34//! }
35//!
36//! type Pool = managed::Pool<Manager>;
37//!
38//! #[tokio::main]
39//! async fn main() {
40//!     let mgr = Manager {};
41//!     let pool = Pool::builder(mgr).max_size(16).build().unwrap();
42//!     let mut conn = pool.get().await.unwrap();
43//!     let answer = conn.get_answer().await;
44//!     assert_eq!(answer, 42);
45//! }
46//! ```
47//!
48//! For a more complete example please see
49//! [`deadpool-postgres`](https://crates.io/crates/deadpool-postgres) crate.
50
51mod builder;
52mod config;
53mod dropguard;
54mod errors;
55mod hooks;
56mod manager;
57mod metrics;
58mod object;
59mod pool;
60pub mod reexports;
61
62pub use crate::Status;
63
64pub use self::{
65    builder::{BuildError, PoolBuilder},
66    config::{CreatePoolError, PoolConfig, QueueMode, Timeouts},
67    errors::{PoolError, RecycleError, TimeoutType},
68    hooks::{Hook, HookError, HookFuture, HookResult},
69    manager::{Manager, RecycleResult},
70    metrics::Metrics,
71    object::{Object, ObjectId},
72    pool::{Pool, RetainResult, WeakPool},
73};