An efficient, generic internment structure.
```rust extern crate shawshank;
fn main() { // prototypical motivation: string internment let mut sp = shawshank::stringprison(); asserteq!(sp.intern("hello"), Ok(0)); asserteq!(sp.intern("world"), Ok(1)); asserteq!(sp.intern("hello"), Ok(0)); assert_eq!(sp.resolve(1), Ok("world"));
// byte vectors work, too
let mut bp = shawshank::byte_prison();
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(555), 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].