Crate fpool[][src]

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.

Getting started

Add the following to your Cargo.toml file:

[dependencies]
fpool = "0.3"

Next, add this to your crate:

extern crate fpool;

Examples

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.

Structs

ItemHandle

A handle to the item. Implements Deref and DerefMut for the item, and also allows you to invalidate the item.

RoundRobinPool

A Pool that uses round-robin logic to retrieve items in the pool. Can be converted into the items with the into_items() function.

Traits

Pool

An object which returns re-used items. Pools hold on to a constructor so they can recreate elements that are invalid (marked by user).