pub struct Interner<T, B = <T as DefaultBackendBuilder>::Backend, H = RandomState>{ /* private fields */ }Expand description
Interner
This struct is responsible for tracking objects and interning them.
§Example
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);Implementations§
Source§impl<T, B, H> Interner<T, B, H>
impl<T, B, H> Interner<T, B, H>
Sourcepub fn with_hasher(hasher: H) -> Selfwhere
B: Default,
pub fn with_hasher(hasher: H) -> Selfwhere
B: Default,
Sourcepub fn with_backend(backend: B) -> Selfwhere
H: Default,
pub fn with_backend(backend: B) -> Selfwhere
H: Default,
Sourcepub fn with_backend_and_hasher(backend: B, hasher: H) -> Self
pub fn with_backend_and_hasher(backend: B, hasher: H) -> Self
Sourcepub fn get_or_intern(&mut self, src: &T) -> B::Symbol
pub fn get_or_intern(&mut self, src: &T) -> B::Symbol
Turns a reference of T into the backend’s symbol
Trait Implementations§
Auto Trait Implementations§
impl<T, B, H> Freeze for Interner<T, B, H>
impl<T, B, H> RefUnwindSafe for Interner<T, B, H>
impl<T, B, H> Send for Interner<T, B, H>
impl<T, B, H> Sync for Interner<T, B, H>
impl<T, B, H> Unpin for Interner<T, B, H>
impl<T, B, H> UnwindSafe for Interner<T, B, H>
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