pulley_interpreter::decode

Struct Decoder

Source
pub struct Decoder { /* private fields */ }
Available on crate feature decode only.
Expand description

A Pulley bytecode decoder.

Does not materialize bytecode instructions, instead all decoding methods are given an OpVisitor implementation and the appropriate visitor methods are called upon decoding an instruction. This minimizes the amount of times we branch on the opcode, avoids constructing temporary storage, and plays well with our variable-length instruction encoding.

Implementations§

Source§

impl Decoder

Source

pub fn new() -> Self

Create a new decoder.

Source

pub fn decode_all<'a, V>(visitor: &mut V) -> Result<Vec<V::Return>>
where V: OpVisitor<BytecodeStream = SafeBytecodeStream<'a>> + ExtendedOpVisitor,

Decode all instructions in the visitor’s bytecode stream.

The associated visitor method is invoked after each instruction is decoded.

Source§

impl Decoder

Source

pub fn decode_one<V>( &mut self, visitor: &mut V, ) -> Result<V::Return, <V::BytecodeStream as BytecodeStream>::Error>

Decode one instruction from the visitor’s bytestream.

Upon decoding, the visitor’s associated callback is invoked and the results returned.

Trait Implementations§

Source§

impl Default for Decoder

Source§

fn default() -> Decoder

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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>,

Source§

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>,

Source§

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.