-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathbuilder.rs
More file actions
48 lines (43 loc) · 1.29 KB
/
builder.rs
File metadata and controls
48 lines (43 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//! Convenience helpers for building an EV-configured EVM from an execution context.
use crate::{
base_fee::BaseFeeRedirect,
evm::{DefaultEvEvm, EvEvm},
};
use reth_revm::revm::handler::MainBuilder;
/// Extension trait mirroring `MainBuilder` but returning [`EvEvm`].
pub trait EvBuilder: MainBuilder {
/// Builds an EVM instance without an inspector.
fn build_ev(
self,
redirect: Option<BaseFeeRedirect>,
) -> DefaultEvEvm<<Self as MainBuilder>::Context>;
/// Builds an EVM instance with a custom inspector.
fn build_ev_with_inspector<INSP>(
self,
inspector: INSP,
redirect: Option<BaseFeeRedirect>,
) -> EvEvm<<Self as MainBuilder>::Context, INSP>;
}
impl<T> EvBuilder for T
where
T: MainBuilder,
{
fn build_ev(
self,
redirect: Option<BaseFeeRedirect>,
) -> DefaultEvEvm<<Self as MainBuilder>::Context> {
EvEvm::from_inner(self.build_mainnet(), redirect, None, false)
}
fn build_ev_with_inspector<INSP>(
self,
inspector: INSP,
redirect: Option<BaseFeeRedirect>,
) -> EvEvm<<Self as MainBuilder>::Context, INSP> {
EvEvm::from_inner(
self.build_mainnet_with_inspector(inspector),
redirect,
None,
true,
)
}
}