Skip to main content

StringPool

Struct StringPool 

Source
pub struct StringPool { /* private fields */ }
Expand description

A pool of interned strings.

Insert new strings with StringPool::insert to get an Atom that is unique per string within the context of the associated pool.

Once you have interned a string into the pool and have its Atom, you can get the interned string slice via &pool[atom] or pool.get(atom).

In general, there are no correctness protections against indexing into a different StringPool from the one that the Atom was not allocated inside. Doing so is memory safe but may panic or otherwise return incorrect results.

Implementations§

Source§

impl StringPool

Source

pub fn new() -> Self

Create a new, empty pool.

Source

pub fn insert(&mut self, s: &str) -> Result<Atom, OutOfMemory>

Insert a new string into this pool.

Source

pub fn get_atom(&self, s: &str) -> Option<Atom>

Get the Atom for the given string, if it has already been inserted into this pool.

Source

pub fn contains(&self, atom: Atom) -> bool

Does this pool contain the given atom?

Source

pub fn get(&self, atom: Atom) -> Option<&str>

Get the string associated with the given atom, if the pool contains the atom.

Source

pub fn len(&self) -> usize

Get the number of strings in this pool.

Trait Implementations§

Source§

impl Debug for StringPool

Source§

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

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

impl Default for StringPool

Source§

fn default() -> StringPool

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

impl<'de> Deserialize<'de> for StringPool

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Drop for StringPool

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Index<&Atom> for StringPool

Source§

type Output = str

The returned type after indexing.
Source§

fn index(&self, atom: &Atom) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
Source§

impl Index<Atom> for StringPool

Source§

type Output = str

The returned type after indexing.
Source§

fn index(&self, atom: Atom) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
Source§

impl Serialize for StringPool

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryClone for StringPool

Source§

fn try_clone(&self) -> Result<Self, OutOfMemory>

Attempt to clone self, returning an error if any allocation fails during cloning.

Auto Trait Implementations§

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> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,