Crate string_interner [] [src]

A string interning data structure that was designed for minimal memory-overhead and fast access to the underlying interned string contents.

Uses a similar interface as the string interner of the rust compiler.

Provides support for all primitive types for indexing.

Example usage:

    use string_interner::StringInterner;
    let mut interner = StringInterner::<usize>::default();
    let name0 = interner.get_or_intern("Elephant");
    let name1 = interner.get_or_intern("Tiger");
    let name2 = interner.get_or_intern("Horse");
    let name3 = interner.get_or_intern("Tiger");
    let name4 = interner.get_or_intern("Tiger");
    let name5 = interner.get_or_intern("Mouse");
    let name6 = interner.get_or_intern("Horse");
    let name7 = interner.get_or_intern("Tiger");
    assert_eq!(name0, 0);
    assert_eq!(name1, 1);
    assert_eq!(name2, 2);
    assert_eq!(name3, 1);
    assert_eq!(name4, 1);
    assert_eq!(name5, 3);
    assert_eq!(name6, 2);
    assert_eq!(name7, 1);

Structs

StringInterner

Provides a bidirectional mapping between String stored within the interner and indices. The main purpose is to store every unique String only once and make it possible to reference it via lightweight indices.

Traits

InternIndex

Represents indices into the StringInterner.