revm_handler/
item_or_result.rs

1use 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>;