Skip to main content

GenerationalPool

Struct GenerationalPool 

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

A string pool that supports generational compaction.

When compact is called, unreferenced strings are removed and the generation counter is incremented, invalidating old handles.

Implementations§

Source§

impl GenerationalPool

Source

pub fn new() -> Self

Create an empty generational pool.

Source

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

Intern a string and return a generational handle.

Source

pub fn release(&mut self, handle: GenerationalString)

Release a handle, decrementing its reference count.

Source

pub fn resolve(&self, handle: GenerationalString) -> Option<&str>

Resolve a handle to its string content.

Source

pub fn is_valid(&self, handle: GenerationalString) -> bool

Check if a handle is still valid (correct generation and non-zero refcount).

Source

pub fn compact(&mut self) -> usize

Compact the pool: remove strings with zero reference count. All handles from the previous generation are invalidated.

Source

pub fn generation(&self) -> u16

Current generation counter.

Source

pub fn live_count(&self) -> usize

Number of live strings (with ref_count > 0).

Source

pub fn total_count(&self) -> usize

Total strings in the pool (including those with rc=0).

Trait Implementations§

Source§

impl Default for GenerationalPool

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.