Skip to main content

StringInterner

Struct StringInterner 

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

Thread-safe string interner for deduplicating repeated string values

This implementation uses Arc to share string data across multiple references, significantly reducing memory usage when the same strings appear multiple times (common in BPSV config files).

Implementations§

Source§

impl StringInterner

Source

pub fn new() -> Self

Create a new string interner

Source

pub fn with_capacity(capacity: usize) -> Self

Create a new string interner with pre-allocated capacity

Source

pub fn intern(&self, s: &str) -> Arc<String>

Intern a string, returning an Arc to the shared instance

If the string already exists in the pool, returns the existing Arc. Otherwise, adds it to the pool and returns a new Arc.

Source

pub fn intern_owned(&self, s: String) -> Arc<String>

Intern a string that we already own

Source

pub fn unique_count(&self) -> usize

Get the number of unique strings in the pool

Source

pub fn memory_usage(&self) -> MemoryStats

Get memory statistics

Source

pub fn clear(&self)

Clear the interner pool

Source

pub fn hit_rate(&self) -> f64

Get hit rate statistics

Trait Implementations§

Source§

impl Clone for StringInterner

Source§

fn clone(&self) -> StringInterner

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StringInterner

Source§

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

Formats the value using the given formatter. Read more
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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.