[][src]Crate string_interner

Caches strings efficiently, with minimal memory footprint and associates them with unique symbols. These symbols allow constant time comparisons and look-ups to the underlying interned strings.

Example: Interning & Symbols

use string_interner::StringInterner;

let mut interner = StringInterner::default();
let sym0 = interner.get_or_intern("Elephant");
let sym1 = interner.get_or_intern("Tiger");
let sym2 = interner.get_or_intern("Horse");
let sym3 = interner.get_or_intern("Tiger");
assert_ne!(sym0, sym1);
assert_ne!(sym0, sym2);
assert_ne!(sym1, sym2);
assert_eq!(sym1, sym3); // same!

Example: Creation by FromIterator

let interner = vec!["Elephant", "Tiger", "Horse", "Tiger"]
    .into_iter()
    .collect::<DefaultStringInterner>();

Example: Look-up

let mut interner = StringInterner::default();
let sym = interner.get_or_intern("Banana");
assert_eq!(interner.resolve(sym), Some("Banana"));

Example: Iteration

let interner = vec!["Earth", "Water", "Fire", "Air"]
    .into_iter()
    .collect::<DefaultStringInterner>();
for (sym, str) in interner {
    // iteration code here!
}

Modules

iter

Iterator implementations for the StringInterner.

symbol

Interfaces and types to be used as symbols for the StringInterner.

Structs

StringInterner

Data structure to intern and resolve strings.

Traits

Symbol

Types implementing this trait can be used as symbols for string interners.

Type Definitions

DefaultStringInterner

StringInterner that uses the DefaultSymbol and a default hash builder.

DefaultSymbol

The symbol type that is used by default.