Trait EvmTr

Source
pub trait EvmTr {
    type Context: ContextTr;
    type Instructions: InstructionProvider;
    type Precompiles;

    // Required methods
    fn run_interpreter(
        &mut self,
        interpreter: &mut Interpreter<<Self::Instructions as InstructionProvider>::InterpreterTypes>,
    ) -> <<Self::Instructions as InstructionProvider>::InterpreterTypes as InterpreterTypes>::Output;
    fn ctx(&mut self) -> &mut Self::Context;
    fn ctx_ref(&self) -> &Self::Context;
    fn ctx_instructions(
        &mut self,
    ) -> (&mut Self::Context, &mut Self::Instructions);
    fn ctx_precompiles(
        &mut self,
    ) -> (&mut Self::Context, &mut Self::Precompiles);
}
Expand description

A trait that integrates context, instruction set, and precompiles to create an EVM struct.

In addition to execution capabilities, this trait provides getter methods for its component fields.

Required Associated Types§

Source

type Context: ContextTr

The context type that implements ContextTr to provide access to execution state

Source

type Instructions: InstructionProvider

The instruction set type that implements InstructionProvider to define available operations

Source

type Precompiles

The type containing the available precompiled contracts

Required Methods§

Source

fn run_interpreter( &mut self, interpreter: &mut Interpreter<<Self::Instructions as InstructionProvider>::InterpreterTypes>, ) -> <<Self::Instructions as InstructionProvider>::InterpreterTypes as InterpreterTypes>::Output

Executes the interpreter loop for the given interpreter instance. Returns either a completion status or the next interpreter action to take.

Source

fn ctx(&mut self) -> &mut Self::Context

Returns a mutable reference to the execution context

Source

fn ctx_ref(&self) -> &Self::Context

Returns an immutable reference to the execution context

Source

fn ctx_instructions(&mut self) -> (&mut Self::Context, &mut Self::Instructions)

Returns mutable references to both the context and instruction set. This enables atomic access to both components when needed.

Source

fn ctx_precompiles(&mut self) -> (&mut Self::Context, &mut Self::Precompiles)

Returns mutable references to both the context and precompiles. This enables atomic access to both components when needed.

Implementations on Foreign Types§

Source§

impl<'a, T: 'a + EvmTr + ?Sized> EvmTr for &'a mut T

Source§

type Context = <T as EvmTr>::Context

Source§

type Instructions = <T as EvmTr>::Instructions

Source§

type Precompiles = <T as EvmTr>::Precompiles

Source§

fn run_interpreter( &mut self, interpreter: &mut Interpreter<<Self::Instructions as InstructionProvider>::InterpreterTypes>, ) -> <<Self::Instructions as InstructionProvider>::InterpreterTypes as InterpreterTypes>::Output

Source§

fn ctx(&mut self) -> &mut Self::Context

Source§

fn ctx_ref(&self) -> &Self::Context

Source§

fn ctx_instructions(&mut self) -> (&mut Self::Context, &mut Self::Instructions)

Source§

fn ctx_precompiles(&mut self) -> (&mut Self::Context, &mut Self::Precompiles)

Source§

impl<CTX, INSP, I, P> EvmTr for Evm<CTX, INSP, I, P>
where CTX: ContextTr, I: InstructionProvider<Context = CTX, InterpreterTypes: InterpreterTypes<Output = InterpreterAction>>,

Source§

type Context = CTX

Source§

type Instructions = I

Source§

type Precompiles = P

Source§

fn run_interpreter( &mut self, interpreter: &mut Interpreter<<Self::Instructions as InstructionProvider>::InterpreterTypes>, ) -> <<Self::Instructions as InstructionProvider>::InterpreterTypes as InterpreterTypes>::Output

Source§

fn ctx(&mut self) -> &mut Self::Context

Source§

fn ctx_ref(&self) -> &Self::Context

Source§

fn ctx_instructions(&mut self) -> (&mut Self::Context, &mut Self::Instructions)

Source§

fn ctx_precompiles(&mut self) -> (&mut Self::Context, &mut Self::Precompiles)

Source§

impl<T: EvmTr + ?Sized> EvmTr for Box<T>

Source§

type Context = <T as EvmTr>::Context

Source§

type Instructions = <T as EvmTr>::Instructions

Source§

type Precompiles = <T as EvmTr>::Precompiles

Source§

fn run_interpreter( &mut self, interpreter: &mut Interpreter<<Self::Instructions as InstructionProvider>::InterpreterTypes>, ) -> <<Self::Instructions as InstructionProvider>::InterpreterTypes as InterpreterTypes>::Output

Source§

fn ctx(&mut self) -> &mut Self::Context

Source§

fn ctx_ref(&self) -> &Self::Context

Source§

fn ctx_instructions(&mut self) -> (&mut Self::Context, &mut Self::Instructions)

Source§

fn ctx_precompiles(&mut self) -> (&mut Self::Context, &mut Self::Precompiles)

Implementors§