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