Skip to main content

StringInterner

Struct StringInterner 

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

A thread-safe string interning pool.

Wraps an Arc<Mutex<InternPool>> so multiple owners can share the same underlying storage. The global singleton is accessible via intern and resolve; StringInterner can also be used as a standalone local interner in tests or as an injected dependency.

Implementations§

Source§

impl StringInterner

Source

pub fn new() -> Self

Creates a new StringInterner backed by a fresh InternPool.

Source

pub fn shared_with(other: &StringInterner) -> Self

Creates a StringInterner sharing the backing pool with other.

Source

pub fn intern(&self, s: &str) -> InternedStr

Interns s and returns an InternedStr handle.

Acquiring the lock returns an error only if the mutex is poisoned (a panic occurred while the lock was held). In that case this method panics with a descriptive message rather than silently continuing.

Source

pub fn resolve(&self, handle: InternedStr) -> Option<&'static str>

Resolves handle to its &'static str content.

Returns None if the handle was not produced by this interner.

Source

pub fn len(&self) -> usize

Returns the number of distinct strings stored.

Source

pub fn is_empty(&self) -> bool

Returns true when no strings have been interned.

Source

pub fn total_bytes(&self) -> usize

Returns the total byte count of all interned strings.

Source

pub fn arc_clone(&self) -> Arc<Mutex<InternPool>>

Clones the underlying Arc so the pool can be shared across threads.

Trait Implementations§

Source§

impl Default for StringInterner

Source§

fn default() -> Self

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

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, 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.