A pool which manages allocation of unique indices. Acts like a psuedo-memory allocator.
[dependencies]
index-pool = "1.0"
extern crate index_pool;
use index_pool::IndexPool;
fn main() {
let mut pool = IndexPool::new();
let a = pool.new_id();
let b = pool.new_id();
let c = pool.new_id();
let mut data = vec![""; pool.maximum()];
data[a] = "apple";
data[b] = "banana";
data[c] = "coconut";
// Nevermind, no bananas
pool.return_id(b).unwrap();
let p = pool.new_id();
data[p] = "pineapple";
assert_eq!(data, vec!["apple", "pineapple", "coconut"]);
}