This crate implements object pool.
```rust use allocfrompool::Pool;
// dummy struct struct Foo([u8; 50]);
// pool has size = 0 by default
let pool = Pool::
// performs allocation let foo1 = pool.alloc(Foo([1; 50])); // returns memory back to pool drop(foo1);
// re-uses the value that we've just returned back to pool let foo2 = pool.alloc(Foo([2; 50])); // returns memory back to pool drop(foo2);
// it also possible to create a Factory based on a pool
// that holds a reference to initial Pool
let factory = pool.factory();
// Factory has the same alloc
method:
let foo3 = factory.alloc(Foo([3; 50]));
// it uses the same pool, and also returns back to the same pool
drop(foo3);
```
You can run cargo bench
:
text
test alloc_with_box ... bench: 56 ns/iter (+/- 6)
test alloc_with_pool ... bench: 7 ns/iter (+/- 0)