[−][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::<StringInterner>();
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::<StringInterner>(); for (sym, str) in &interner { // iteration code here! }
Modules
backend | Backends for the |
symbol | Interfaces and types to be used as symbols for the
|
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
DefaultBackend | The default backend recommended for general use. |
DefaultHashBuilder | Default hasher for |
DefaultSymbol | The symbol type that is used by default. |