pub struct StringBackend<S = DefaultSymbol> { /* private fields */ }
Expand description
An interner backend that accumulates all interned string contents into one string.
§Note
Implementation inspired by CAD97’s research
project strena
.
§Usage Hint
Use this backend if runtime performance is what matters most to you.
§Usage
- Fill: Efficiency of filling an empty string interner.
- Resolve: Efficiency of interned string look-up given a symbol.
- Allocations: The number of allocations performed by the backend.
- Footprint: The total heap memory consumed by the backend.
- Contiguous: True if the returned symbols have contiguous values.
- Iteration: Efficiency of iterating over the interned strings.
Rating varies between bad, ok, good and best.
Scenario | Rating |
---|---|
Fill | good |
Resolve | ok |
Allocations | good |
Footprint | good |
Supports get_or_intern_static | no |
Send + Sync | yes |
Contiguous | yes |
Iteration | good |
Trait Implementations§
Source§impl<S> Backend for StringBackend<S>where
S: Symbol,
impl<S> Backend for StringBackend<S>where
S: Symbol,
Source§fn with_capacity(cap: usize) -> Self
fn with_capacity(cap: usize) -> Self
Creates a new backend for the given capacity. Read more
Source§fn intern(&mut self, string: &str) -> Self::Symbol
fn intern(&mut self, string: &str) -> Self::Symbol
Interns the given string and returns its interned ref and symbol. Read more
Source§fn resolve(&self, symbol: Self::Symbol) -> Option<&str>
fn resolve(&self, symbol: Self::Symbol) -> Option<&str>
Resolves the given symbol to its original string contents.
Source§fn shrink_to_fit(&mut self)
fn shrink_to_fit(&mut self)
Shrink backend capacity to fit interned symbols exactly.
Source§unsafe fn resolve_unchecked(&self, symbol: Self::Symbol) -> &str
unsafe fn resolve_unchecked(&self, symbol: Self::Symbol) -> &str
Resolves the given symbol to its original string contents. Read more
Source§impl<S> Clone for StringBackend<S>
impl<S> Clone for StringBackend<S>
Source§impl<S: Debug> Debug for StringBackend<S>
impl<S: Debug> Debug for StringBackend<S>
Source§impl<S> Default for StringBackend<S>
impl<S> Default for StringBackend<S>
Source§impl<'a, S> IntoIterator for &'a StringBackend<S>where
S: Symbol,
impl<'a, S> IntoIterator for &'a StringBackend<S>where
S: Symbol,
Source§impl<S> PartialEq for StringBackend<S>where
S: Symbol,
impl<S> PartialEq for StringBackend<S>where
S: Symbol,
impl<S> Eq for StringBackend<S>where
S: Symbol,
Auto Trait Implementations§
impl<S> Freeze for StringBackend<S>
impl<S> RefUnwindSafe for StringBackend<S>
impl<S> Send for StringBackend<S>
impl<S> Sync for StringBackend<S>
impl<S> Unpin for StringBackend<S>
impl<S> UnwindSafe for StringBackend<S>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)