pub struct SymbolPool { /* private fields */ }
Expand description

A pool of symbols. Allows to lookup a symbol by a string representation, and discover the string representation of an existing symbol. This struct does not need be mutable for operations on it, which is important so references to it can be freely passed around.

Implementations§

source§

impl SymbolPool

source

pub fn new() -> SymbolPool

Creates a new SymbolPool.

source

pub fn make(&self, s: &str) -> Symbol

Looks up a symbol by its string representation. If a symbol with this representation already exists, it will be returned, otherwise a new one will be created in the pool. The implementation uses internally a RefCell for storing symbols, so the pool does not need to be mutable.

source

pub fn string(&self, sym: Symbol) -> Rc<String>

Returns the string representation of this symbol, as an rc’ed string to avoid copies. If the past symbol was not created from this pool, a runtime error may happen (or a wrong string will be returned).

Trait Implementations§

source§

impl Debug for SymbolPool

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for SymbolPool

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V