Skip to main content

Module intern

Module intern 

Source
Expand description

String interning for O(1) equality comparison.

Symbols are lightweight integer handles that point to interned strings. By storing each unique string exactly once and comparing integer handles, we achieve O(1) equality checks regardless of string length.

§Example

use logicaffeine_base::{Interner, Symbol};

let mut interner = Interner::new();

let s1 = interner.intern("hello");
let s2 = interner.intern("hello");  // Same string
let s3 = interner.intern("world");  // Different string

// Same strings produce same symbols (O(1) comparison)
assert_eq!(s1, s2);
assert_ne!(s1, s3);

// Resolve back to strings when needed
assert_eq!(interner.resolve(s1), "hello");

§Use Cases

  • Variable names: Compared frequently during scope lookup
  • Keywords: Compared during lexing and parsing
  • Type names: Compared during type checking

Structs§

Interner
A string interner providing O(1) equality comparison via Symbol handles.
Symbol
A lightweight handle to an interned string.

Traits§

SymbolEq
Convenience trait for comparing a Symbol to a string literal.