pub trait EvmFactory {
type DefaultExternalContext<'a>;
// Required method
fn default_external_context<'a>(&self) -> Self::DefaultExternalContext<'a>;
// Provided methods
fn evm<DB: Database>(
self,
db: DB,
) -> Evm<'static, Self::DefaultExternalContext<'static>, DB>
where Self: Sized { ... }
fn evm_with_env<'a, DB: Database + 'a>(
&self,
db: DB,
env: EnvWithHandlerCfg,
) -> Evm<'a, Self::DefaultExternalContext<'a>, DB> { ... }
fn evm_with_env_and_inspector<DB, I>(
&self,
db: DB,
env: EnvWithHandlerCfg,
inspector: I,
) -> Evm<'_, I, DB>
where DB: Database,
I: GetInspector<DB> { ... }
fn evm_with_inspector<DB, I>(&self, db: DB, inspector: I) -> Evm<'_, I, DB>
where DB: Database,
I: GetInspector<DB> { ... }
}
Expand description
Trait for configuring the EVM for executing full blocks.
Required Associated Types§
Sourcetype DefaultExternalContext<'a>
type DefaultExternalContext<'a>
Associated type for the default external context that should be configured for the EVM.
Required Methods§
Sourcefn default_external_context<'a>(&self) -> Self::DefaultExternalContext<'a>
fn default_external_context<'a>(&self) -> Self::DefaultExternalContext<'a>
Provides the default external context.
Provided Methods§
Sourcefn evm<DB: Database>(
self,
db: DB,
) -> Evm<'static, Self::DefaultExternalContext<'static>, DB>where
Self: Sized,
fn evm<DB: Database>(
self,
db: DB,
) -> Evm<'static, Self::DefaultExternalContext<'static>, DB>where
Self: Sized,
Returns new EVM with the given database
This does not automatically configure the EVM with crate::ConfigureEvmEnv
methods. It is
up to the caller to call an appropriate method to fill the transaction and block
environment before executing any transactions using the provided EVM.
Sourcefn evm_with_env<'a, DB: Database + 'a>(
&self,
db: DB,
env: EnvWithHandlerCfg,
) -> Evm<'a, Self::DefaultExternalContext<'a>, DB>
fn evm_with_env<'a, DB: Database + 'a>( &self, db: DB, env: EnvWithHandlerCfg, ) -> Evm<'a, Self::DefaultExternalContext<'a>, DB>
Returns a new EVM with the given database configured with the given environment settings, including the spec id.
This will preserve any handler modifications
Sourcefn evm_with_env_and_inspector<DB, I>(
&self,
db: DB,
env: EnvWithHandlerCfg,
inspector: I,
) -> Evm<'_, I, DB>where
DB: Database,
I: GetInspector<DB>,
fn evm_with_env_and_inspector<DB, I>(
&self,
db: DB,
env: EnvWithHandlerCfg,
inspector: I,
) -> Evm<'_, I, DB>where
DB: Database,
I: GetInspector<DB>,
Returns a new EVM with the given database configured with the given environment settings, including the spec id.
This will use the given external inspector as the EVM external context.
This will preserve any handler modifications
Sourcefn evm_with_inspector<DB, I>(&self, db: DB, inspector: I) -> Evm<'_, I, DB>where
DB: Database,
I: GetInspector<DB>,
fn evm_with_inspector<DB, I>(&self, db: DB, inspector: I) -> Evm<'_, I, DB>where
DB: Database,
I: GetInspector<DB>,
Returns a new EVM with the given inspector.
Caution: This does not automatically configure the EVM with crate::ConfigureEvmEnv
methods. It is up to the caller to call an appropriate method to fill the transaction
and block environment before executing any transactions using the provided EVM.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.