shawshank
=========
An efficient, generic internment structure.
[](https://travis-ci.org/kinghajj/shawshank)
[](https://crates.io/crates/shawshank)
[](LICENSE)
```rust
extern crate shawshank;
fn main() {
// prototypical motivation: string internment
let mut sp = shawshank::string_arena_set();
assert_eq!(sp.intern("hello"), Ok(0));
assert_eq!(sp.intern("world"), Ok(1));
assert_eq!(sp.intern("hello"), Ok(0));
assert_eq!(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].
[docs]: https://kinghajj.github.io/shawshank/shawshank/index.html