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 to use all primitive types as symbols

Example usage:

    use string_interner::StringInterner;
    let mut interner = StringInterner::<usize>::new();
    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

Iter

Iterator over the pairs of symbols and interned string for a StringInterner.

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.

Values

Iterator over the interned strings for a StringInterner.

Traits

NonNegative

Number types implementing this trait are always non negative.

Symbol

Represents indices into the StringInterner.

Type Definitions

DefaultStringInterner

Defaults to using usize as the underlying and internal symbol data representation within this StringInterner.