pub struct Interner<I = u32> { /* private fields */ }
Expand description
A struct responsible for efficiently interning strings
§Examples
use mini_intern::Interner;
const TEST_CASE: &str = "test_case";
let mut interner = <Interner<u32>>::with_capacity(64);
_ = interner.intern("something");
_ = interner.intern("something_else");
_ = interner.intern("something_else_again");
_ = interner.intern(TEST_CASE);
assert_eq!(interner.intern(TEST_CASE), 3);
Implementations§
Source§impl<I> Interner<I>
impl<I> Interner<I>
Sourcepub fn with_capacity(cap: usize) -> Self
pub fn with_capacity(cap: usize) -> Self
Sourcepub fn intern(&mut self, name: &str) -> I
pub fn intern(&mut self, name: &str) -> I
Interns the given value. If the value already exists in the interner, its ID is returned and no allocation is performed. If it does not exist, the value is interned and a new ID is created for it.
If the intern space is below the maximum capacity, no allocation occurs.
§Examples
use mini_intern::Interner;
let mut interner: Interner<u32> = Interner::with_capacity(32);
interner.intern("hello");
interner.intern("and");
interner.intern("good");
interner.intern("morning");
assert_eq!(interner.intern("good"), 2u32);
pub fn lookup(&self, id: I) -> &'static str
Trait Implementations§
Auto Trait Implementations§
impl<I> Freeze for Interner<I>
impl<I> RefUnwindSafe for Interner<I>where
I: RefUnwindSafe,
impl<I> Send for Interner<I>where
I: Send,
impl<I> Sync for Interner<I>where
I: Sync,
impl<I> Unpin for Interner<I>where
I: Unpin,
impl<I> UnwindSafe for Interner<I>where
I: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more