reth_node_builder/components/
execute.rs1use crate::{BuilderContext, ConfigureEvm, FullNodeTypes};
3use reth_node_api::PrimitivesTy;
4use std::future::Future;
5
6pub trait ExecutorBuilder<Node: FullNodeTypes>: Send {
8 type EVM: ConfigureEvm<Primitives = PrimitivesTy<Node::Types>> + 'static;
12
13 fn build_evm(
15 self,
16 ctx: &BuilderContext<Node>,
17 ) -> impl Future<Output = eyre::Result<Self::EVM>> + Send;
18}
19
20impl<Node, F, Fut, EVM> ExecutorBuilder<Node> for F
21where
22 Node: FullNodeTypes,
23 EVM: ConfigureEvm<Primitives = PrimitivesTy<Node::Types>> + 'static,
24 F: FnOnce(&BuilderContext<Node>) -> Fut + Send,
25 Fut: Future<Output = eyre::Result<EVM>> + Send,
26{
27 type EVM = EVM;
28
29 fn build_evm(
30 self,
31 ctx: &BuilderContext<Node>,
32 ) -> impl Future<Output = eyre::Result<Self::EVM>> {
33 self(ctx)
34 }
35}