op_revm/
result.rs

1//! Contains the `[OpHaltReason]` type.
2use revm::context_interface::result::HaltReason;
3
4/// Optimism halt reason.
5#[derive(Clone, Debug, PartialEq, Eq, Hash)]
6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7pub enum OpHaltReason {
8    /// Base halt reason.
9    Base(HaltReason),
10    /// Failed deposit halt reason.
11    FailedDeposit,
12}
13
14impl From<HaltReason> for OpHaltReason {
15    fn from(value: HaltReason) -> Self {
16        Self::Base(value)
17    }
18}
19
20#[cfg(all(test, feature = "serde"))]
21mod tests {
22    use super::*;
23    use revm::context_interface::result::OutOfGasError;
24
25    #[test]
26    fn test_serialize_json_op_halt_reason() {
27        let response = r#"{"Base":{"OutOfGas":"Basic"}}"#;
28
29        let op_halt_reason: OpHaltReason = serde_json::from_str(response).unwrap();
30        assert_eq!(
31            op_halt_reason,
32            HaltReason::OutOfGas(OutOfGasError::Basic).into()
33        );
34    }
35}