Crates.io | fpool |
lib.rs | fpool |
version | 0.5.0 |
source | src |
created_at | 2018-05-03 22:35:18.755034 |
updated_at | 2020-01-28 21:03:48.86961 |
description | Non-leased object-pooling. |
homepage | https://github.com/DarrenTsung/fpool |
repository | https://github.com/DarrenTsung/fpool |
max_upload_size | |
id | 63669 |
size | 15,477 |
Non-leased object-pooling in Rust.
Non-leased as in: you cannot hold onto objects given from the Pool. This, unfortunately, is not something I could get enforced by the compiler without making the API hard to work with.
Add the following to your Cargo.toml
file:
[dependencies]
fpool = "0.3"
Next, add this to your crate:
extern crate fpool;
A trivial use-case for a round-robin pool:
use fpool::RoundRobinPool;
let mut pool = RoundRobinPool::builder(5, || -> Result<_, ()> {
Ok(Vec::new())
}).build().expect("No constructor failure case");
for index in 0..10 {
let list = pool.get().expect("No constructor failure case");
list.push(index);
}
// The pool now has 5 lists with 2 items each
for _ in 0..5 {
let list = pool.get().expect("No constructor failure case");
assert_eq!(list.len(), 2);
}
But a more useful and realistic example is a thread-pool, see examples/thread_pool.rs.