blocking_object_pool 0.1.0

a thread safe, blocking, object pool in rust
Documentation
# BlockingObjectPool



A thread safe, blocking, object pool in rust.

### Summary

*  `BlockingObjectPool::with_capacity` or `BlockingObjectPool::with_objects` to initialize a pool
*  `pool.get` to obtain a object from the pool

If the pool is empty, `get` will be blocked.

If the object is out of scope, it's been put back to the pool automatically.

That's all!

### Examples

```rust
extern crate blocking_object_pool;

use blocking_object_pool::BlockingObjectPool;

#[derive(Clone)]
struct Hello {
    a: i32,
    b: i32,
}

fn main() {
    let pool = BlockingObjectPool::with_capacity(2, || Hello { a: 1, b: 2 });

    // get one object
    let m = pool.get();
    assert_eq!(m.a, 1);
    println!("one. m.a={}", m.a);

    // get another object.
    {
        let mut m = pool.get();
        println!("two. m.a={}", m.a);
        m.a = 11;
    } // here the 2nd object goes out of scope, and it's been put back to the pool automatically.
    // you can either call drop(m) manually.

    let m = pool.get();
    assert_eq!(m.a, 11);
    println!("two again, m.a={}", m.a);

    println!("this line will be blocked for ever");
    let _m = pool.get();
}
```



Inspired by zslayton's [lifeguard](https://github.com/zslayton/lifeguard).