pub struct Interner<'a, T: 'a + Eq> { /* private fields */ }
Expand description
The interner.
An interner is a structure which uniquely owns the interned items, and provides shared immutable references to those items.
Implementations§
Source§impl<'a, T: 'a + Eq> Interner<'a, T>
impl<'a, T: 'a + Eq> Interner<'a, T>
pub fn new() -> Self
Sourcepub fn intern(&mut self, item: T) -> Intern<'a, T>
pub fn intern(&mut self, item: T) -> Intern<'a, T>
Intern an item.
This consumes the item by adding it to the intern-list and returns a reference to it. It also extends the lifetime of the item to match the lifetime of this interner.
This item is dropped if an item equal to this one is already interned, in which case a reference to the already interned item is returned instead.
pub fn contains(&self, item: &T) -> bool
pub fn iter<'this>(&'this self) -> Iter<'this, 'a, T> ⓘ
Trait Implementations§
Auto Trait Implementations§
impl<'a, T> Freeze for Interner<'a, T>
impl<'a, T> RefUnwindSafe for Interner<'a, T>where
T: RefUnwindSafe,
impl<'a, T> Send for Interner<'a, T>
impl<'a, T> Unpin for Interner<'a, T>where
T: Unpin,
impl<'a, T> UnwindSafe for Interner<'a, T>where
T: RefUnwindSafe + 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