There are already a lot of string interning libraries out there, so this one is mostly just for my personal use case: writing a compiler without passing around a struct everywhere.
```rust use simple_symbol::{intern, resolve};
pub fn main() { let a = intern("A"); let b = intern("A");
assert_eq!(a, a);
let c = intern("B");
assert_ne!(a, c);
assert_ne!(b, c);
// Prints "A"
println!("{}", a);
let str_a = resolve(a);
assert_eq!(str_a, "A");
} ```
Symbols are compared via usize
indices, and automatically
query the global INTERNER
struct when printing or converting.
Leaks all interned Strings for the duration of the program. Unsuitable for long-running programs.
2.0.0
lazy_static
to support multi-threaded programs.1.0.0
PartialOrd
and Ord
for Symbol
for easier use as keys in crates like petgraph
.0.1.0