Crate interns

Source
Expand description

An object interner library

The main element of this crate is the Interner struct.

It allows to build a “storage” of any kind of object that avoids repetition and memory waste.

§Example (String interner)

use interns::*;

let mut interner = Interner::<str>::default();

let a = interner.get_or_intern("hello");
let b = interner.get_or_intern("world");
let c = interner.get_or_intern("hello");

let a_resolv = interner.resolve(a);
let b_resolv = interner.resolve(b);
let c_resolv = interner.resolve(c);

assert_eq!(a_resolv, Some("hello"));
assert_eq!(b_resolv, Some("world"));
assert_eq!(c_resolv, Some("hello"));

assert_eq!(a, c);
assert_ne!(a, b);
assert_ne!(b, c);

Re-exports§

pub use backend::Backend;
pub use backend::DefaultBackendBuilder;
pub use backend::StringBuf;

Modules§

backend

Structs§

Interner
Interner

Type Aliases§

StringInterner
Symbol