Trait artichoke_backend::core::Intern[][src]

pub trait Intern {
    type Symbol: Copy;
    type Error;

    const SYMBOL_RANGE_START: Self::Symbol;

    fn intern_bytes<T>(
        &mut self,
        symbol: T
    ) -> Result<Self::Symbol, Self::Error>
    where
        T: Into<Cow<'static, [u8]>>
;
fn check_interned_bytes(
        &self,
        symbol: &[u8]
    ) -> Result<Option<Self::Symbol>, Self::Error>;
fn lookup_symbol(
        &self,
        symbol: Self::Symbol
    ) -> Result<Option<&[u8]>, Self::Error>;
fn symbol_count(&self) -> usize; fn intern_string<T>(
        &mut self,
        symbol: T
    ) -> Result<Self::Symbol, Self::Error>
    where
        T: Into<Cow<'static, str>>
, { ... }
fn check_interned_string(
        &self,
        symbol: &str
    ) -> Result<Option<Self::Symbol>, Self::Error> { ... } }
Expand description

Store and retrieve bytestrings that have the same lifetime as the interpreter.

See the Ruby Symbol type.

Associated Types

Concrete type for symbol identifiers.

The symbol identifier enables lookups in the underlying storage.

Concrete type for errors returned while interning symbols.

Associated Constants

The initial Symbol index returned by the interner.

Implementing Intern requires that symbol identifiers form an arithmetic progression with a common difference of 1. The sequence of symbol identifiers must be representable by a Range<u32>.

Required methods

Store an immutable bytestring for the life of the interpreter.

Returns an identifier that enables retrieving the original bytes.

Errors

If the symbol store cannot be accessed, an error is returned.

If the symbol table overflows, an error is returned.

Check if a bytestring is already interned and return its symbol identifier. Return None if the string has not been interned before.

Returns an identifier that enables retrieving the original bytes.

Errors

If the symbol store cannot be accessed, an error is returned.

Retrieve the original byte content of an interned bytestring.

Returns None if the symbol identifier is invalid.

Errors

If the symbol store cannot be accessed, an error is returned.

Retrieve the number of unique strings interned.

This method should return the length of the underlying symbol table.

Provided methods

Store an immutable string for the life of the interpreter.

Returns an identifier that enables retrieving the original bytes.

By default, this method is implemented by delegating to Intern::intern_bytes.

Errors

If the symbol store cannot be accessed, an error is returned.

If the symbol table overflows, an error is returned.

Check if a string is already interned and return its symbol identifier. Return None if the string has not been interned before.

Returns an identifier that enables retrieving the original bytes.

By default, this method is implemented by delegating to Intern::check_interned_bytes.

Errors

If the symbol store cannot be accessed, an error is returned.

Implementors