4 releases

Uses old Rust 2015

0.2.3 Jul 19, 2017
0.2.2 Jul 12, 2017
0.2.1 Dec 5, 2016
0.2.0 Dec 5, 2016
0.1.0 Dec 4, 2016

#1423 in Rust patterns

Download history 18/week @ 2023-10-17 15/week @ 2023-10-24 22/week @ 2023-10-31 16/week @ 2023-11-07 24/week @ 2023-11-14 21/week @ 2023-11-21 34/week @ 2023-11-28 18/week @ 2023-12-05 20/week @ 2023-12-12 13/week @ 2023-12-19 23/week @ 2023-12-26 15/week @ 2024-01-02 13/week @ 2024-01-09 14/week @ 2024-01-16 21/week @ 2024-01-23 17/week @ 2024-01-30

68 downloads per month
Used in 2 crates (via cov)

MIT license

32KB
459 lines

shawshank

An efficient, generic internment structure.

Travis-CI Status Crates.io License

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.

Dependencies

~245KB