revm_handler/
item_or_result.rs1use crate::Frame;
2
3#[derive(Clone, Debug)]
4pub enum ItemOrResult<ITEM, RES> {
5 Item(ITEM),
6 Result(RES),
7}
8
9impl<ITEM, RES> ItemOrResult<ITEM, RES> {
10 pub fn map_frame<OITEM>(self, f: impl FnOnce(ITEM) -> OITEM) -> ItemOrResult<OITEM, RES> {
11 match self {
12 ItemOrResult::Item(item) => ItemOrResult::Item(f(item)),
13 ItemOrResult::Result(result) => ItemOrResult::Result(result),
14 }
15 }
16
17 pub fn map_result<ORES>(self, f: impl FnOnce(RES) -> ORES) -> ItemOrResult<ITEM, ORES> {
18 match self {
19 ItemOrResult::Item(item) => ItemOrResult::Item(item),
20 ItemOrResult::Result(result) => ItemOrResult::Result(f(result)),
21 }
22 }
23}
24
25pub type FrameOrResult<FRAME> = ItemOrResult<FRAME, <FRAME as Frame>::FrameResult>;
26pub type FrameInitOrResult<FRAME> =
27 ItemOrResult<<FRAME as Frame>::FrameInit, <FRAME as Frame>::FrameResult>;