pub struct Pool<T: Send> { /* private fields */ }
Implementations§
source§impl<T: Send + 'static> Pool<T>
impl<T: Send + 'static> Pool<T>
sourcepub async fn new<F>(size: usize, factory: F) -> Result<Self>where
SyncFactory<T>: From<F>,
pub async fn new<F>(size: usize, factory: F) -> Result<Self>where SyncFactory<T>: From<F>,
Default constructor for the Pool object:
let pool = block_on(async { Pool::new(10, Box::new(|| AnyObject)).await.unwrap() });
The pool requires an object factory in order to be able to provide lazy initialization for objects. Any synchronous closure can be used to create a SyncFactory.
sourcepub async fn new_with_factory<F>(size: usize, factory: F) -> Result<Self>where
F: Factory<T> + 'static,
pub async fn new_with_factory<F>(size: usize, factory: F) -> Result<Self>where F: Factory<T> + 'static,
sourcepub async fn get(&self) -> Pooled<T>
pub async fn get(&self) -> Pooled<T>
To get an object out of the pool use get. This will return a future so you either need to await on it or to use it in an async manner
let object = block_on(async {
let pool = Pool::new(10, Box::new(|| AnyObject)).await.unwrap();
get!(object = pool => {
// Object was retrieved and assigned to `object`. It will be put back at
// the end of this block, unless it's marked as tainted.
Pooled::tainted(&mut object);
});
});
Auto Trait Implementations§
impl<T> !RefUnwindSafe for Pool<T>
impl<T> Send for Pool<T>
impl<T> Sync for Pool<T>
impl<T> Unpin for Pool<T>
impl<T> !UnwindSafe for Pool<T>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more