Struct Interner

Source
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>

Source

pub fn new() -> Self

Source

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.

Source

pub fn contains(&self, item: &T) -> bool

Source

pub fn iter<'this>(&'this self) -> Iter<'this, 'a, T>

Trait Implementations§

Source§

impl<'a, T> !Sync for Interner<'a, T>

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>
where T: Sync + Send,

§

impl<'a, T> Unpin for Interner<'a, T>
where T: Unpin,

§

impl<'a, T> UnwindSafe for Interner<'a, T>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.