Files
reth/crates/node/builder/src/components/execute.rs
Federico Gimenez 699b3fde1b chore: remove BlockExecutorProvider trait (#15989)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-05-06 11:34:37 +00:00

36 lines
1.0 KiB
Rust

//! EVM component for the node builder.
use crate::{BuilderContext, ConfigureEvm, FullNodeTypes};
use reth_node_api::PrimitivesTy;
use std::future::Future;
/// A type that knows how to build the executor types.
pub trait ExecutorBuilder<Node: FullNodeTypes>: Send {
/// The EVM config to use.
///
/// This provides the node with the necessary configuration to configure an EVM.
type EVM: ConfigureEvm<Primitives = PrimitivesTy<Node::Types>> + 'static;
/// Creates the EVM config.
fn build_evm(
self,
ctx: &BuilderContext<Node>,
) -> impl Future<Output = eyre::Result<Self::EVM>> + Send;
}
impl<Node, F, Fut, EVM> ExecutorBuilder<Node> for F
where
Node: FullNodeTypes,
EVM: ConfigureEvm<Primitives = PrimitivesTy<Node::Types>> + 'static,
F: FnOnce(&BuilderContext<Node>) -> Fut + Send,
Fut: Future<Output = eyre::Result<EVM>> + Send,
{
type EVM = EVM;
fn build_evm(
self,
ctx: &BuilderContext<Node>,
) -> impl Future<Output = eyre::Result<Self::EVM>> {
self(ctx)
}
}