Struct artichoke_backend::state::State

source ·
pub struct State {
    pub parser: Option<State>,
    pub classes: Registry<Spec>,
    pub modules: Registry<Spec>,
    pub load_path_vfs: Adapter,
    pub regexp: State,
    pub symbols: SymbolTable<BuildHasherDefault<FxHasher>>,
    pub output: Strategy,
    pub hash_builder: RandomState,
    pub prng: Random,
}
Expand description

Container for interpreter global state.

A Ruby interpreter requires various pieces of state to execute Ruby code. It needs an object heap, type registry, symbol table, pseudorandom number generator, and more.

This struct stores all of these components and allows them to be passed around as one bundle. This is useful in FFI contexts because this State can be Boxed and stored in a user data pointer.

Fields§

§parser: Option<State>§classes: Registry<Spec>§modules: Registry<Spec>§load_path_vfs: Adapter§regexp: State§symbols: SymbolTable<BuildHasherDefault<FxHasher>>§output: Strategy§hash_builder: RandomState§prng: Random

Implementations§

source§

impl State

source

pub fn new() -> Result<Self, InterpreterAllocError>

Create a new State.

The state is comprised of several components:

§Errors

If the core-random feature is enabled, this function may return an error if the interpreter-global pseudorandom number generator fails to initialize using the platform source of randomness.

Trait Implementations§

source§

impl Debug for State

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for State

§

impl RefUnwindSafe for State

§

impl !Send for State

§

impl !Sync for State

§

impl Unpin for State

§

impl UnwindSafe for State

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.