Trait string_interner::backend::Backend[][src]

pub trait Backend: Default {
    type Symbol: Symbol;
    fn with_capacity(cap: usize) -> Self;
fn intern(&mut self, string: &str) -> Self::Symbol;
fn shrink_to_fit(&mut self);
fn resolve(&self, symbol: Self::Symbol) -> Option<&str>;
unsafe fn resolve_unchecked(&self, symbol: Self::Symbol) -> &str; fn intern_static(&mut self, string: &'static str) -> Self::Symbol { ... } }
Expand description

Types implementing this trait may act as backends for the string interner.

The job of a backend is to actually store, manage and organize the interned strings. Different backends have different trade-offs. Users should pick their backend with hinsight of their personal use-case.

Associated Types

The symbol used by the string interner backend.

Required methods

Creates a new backend for the given capacity.

The capacity denotes how many strings are expected to be interned.

Interns the given string and returns its interned ref and symbol.

Note

The backend must make sure that the returned symbol maps back to the original string in its resolve method.

Shrink backend capacity to fit interned symbols exactly.

Resolves the given symbol to its original string contents.

Resolves the given symbol to its original string contents.

Safety

Does not perform validity checks on the given symbol and relies on the caller to be provided with a symbol that has been generated by the intern or intern_static methods of the same interner backend.

Provided methods

Interns the given static string and returns its interned ref and symbol.

Note

The backend must make sure that the returned symbol maps back to the original string in its resolve method.

Implementors