shawshank

An efficient, generic internment structure.

Travis-CI Status Crates.io License

```rust extern crate shawshank;

fn main() { // prototypical motivation: string internment let mut sp = shawshank::stringarenaset(); asserteq!(sp.intern("hello"), Ok(0)); asserteq!(sp.intern("world"), Ok(1)); asserteq!(sp.intern("hello"), Ok(0)); asserteq!(sp.resolve(1), Ok("world"));

// byte vectors work, too
let mut bp = shawshank::byte_arena_set();
assert_eq!(bp.intern(&[0, 1, 2][..]), Ok(0));

// even Box<T>
let mut p = shawshank::builder::<Box<u8>>().hash().unwrap();
assert_eq!(p.intern(255), Ok(0));

// BTreeMap instead of default HashMap
let mut bsp = shawshank::builder::<String>().btree().unwrap();
assert_eq!(bsp.intern("foo"), Ok(0));

} ```

For more details, see the [docs].