pub struct BufferBackend<S = DefaultSymbol> { /* private fields */ }
Expand description
An interner backend that appends all interned string information in a single buffer.
§Usage Hint
Use this backend if memory consumption is what matters most to you. Note though that unlike all other backends symbol values are not contigous!
§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 | best |
Resolve | bad |
Allocations | best |
Footprint | best |
Supports get_or_intern_static | no |
Send + Sync | yes |
Contiguous | no |
Iteration | bad |
Trait Implementations§
Source§impl<S> Backend for BufferBackend<S>where
S: Symbol,
impl<S> Backend for BufferBackend<S>where
S: Symbol,
Source§fn with_capacity(capacity: usize) -> Self
fn with_capacity(capacity: 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 BufferBackend<S>
impl<S> Clone for BufferBackend<S>
Source§impl<S: Debug> Debug for BufferBackend<S>
impl<S: Debug> Debug for BufferBackend<S>
Source§impl<S> Default for BufferBackend<S>
impl<S> Default for BufferBackend<S>
Source§impl<'a, S> IntoIterator for &'a BufferBackend<S>where
S: Symbol,
impl<'a, S> IntoIterator for &'a BufferBackend<S>where
S: Symbol,
Source§impl<S> PartialEq for BufferBackend<S>where
S: Symbol,
impl<S> PartialEq for BufferBackend<S>where
S: Symbol,
impl<S> Eq for BufferBackend<S>where
S: Symbol,
Auto Trait Implementations§
impl<S> Freeze for BufferBackend<S>
impl<S> RefUnwindSafe for BufferBackend<S>
impl<S> Send for BufferBackend<S>
impl<S> Sync for BufferBackend<S>
impl<S> Unpin for BufferBackend<S>
impl<S> UnwindSafe for BufferBackend<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
)