OptionalRuntimeObserver

Struct OptionalRuntimeObserver 

Source
pub struct OptionalRuntimeObserver<'o>(pub Option<&'o mut dyn RuntimeObserver>);
Expand description

Runtime observer that is optimised for the case where no observer is being used.

The trait RuntimeObserver is implemented on the Optional. This removes the dynamic dispatch overhead when no observer is being used.

Tuple Fields§

§0: Option<&'o mut dyn RuntimeObserver>

Trait Implementations§

Source§

impl<'o> From<&'o mut dyn RuntimeObserver> for OptionalRuntimeObserver<'o>

Source§

fn from(val: &'o mut dyn RuntimeObserver) -> Self

Converts to this type from the input type.
Source§

impl<'o> RuntimeObserver for OptionalRuntimeObserver<'o>

Source§

fn observe_enter_call_frame( &mut self, arg_count: usize, lambda: &Rc<Lambda>, call_depth: usize, )

Called when the runtime enters a new call frame.
Source§

fn observe_exit_call_frame(&mut self, frame_at: usize, stack: &[Value])

Called when the runtime exits a call frame.
Source§

fn observe_suspend_call_frame(&mut self, frame_at: usize, stack: &[Value])

Called when the runtime suspends a call frame.
Source§

fn observe_enter_generator( &mut self, frame_at: usize, name: &str, stack: &[Value], )

Called when the runtime enters a generator frame.
Source§

fn observe_exit_generator( &mut self, frame_at: usize, name: &str, stack: &[Value], )

Called when the runtime exits a generator frame.
Source§

fn observe_suspend_generator( &mut self, frame_at: usize, name: &str, stack: &[Value], )

Called when the runtime suspends a generator frame.
Source§

fn observe_generator_request(&mut self, name: &str, msg: &VMRequest)

Called when a generator requests an action from the VM.
Source§

fn observe_tail_call(&mut self, frame_at: usize, lambda: &Rc<Lambda>)

Called when the runtime replaces the current call frame for a tail call.
Source§

fn observe_enter_builtin(&mut self, name: &'static str)

Called when the runtime enters a builtin.
Source§

fn observe_exit_builtin(&mut self, name: &'static str, stack: &[Value])

Called when the runtime exits a builtin.
Source§

fn observe_execute_op(&mut self, ip: CodeIdx, op: &Op, stack: &[Value])

Called when the runtime begins executing an instruction. The provided stack is the state at the beginning of the operation.

Auto Trait Implementations§

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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.
§

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

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V