alloy_rpc_types_engine/
cancun.rs1use alloc::vec::Vec;
5use alloy_primitives::B256;
6
7#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
13#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
14#[cfg_attr(any(test, feature = "arbitrary"), derive(arbitrary::Arbitrary))]
15pub struct CancunPayloadFields {
16 pub parent_beacon_block_root: B256,
18
19 pub versioned_hashes: Vec<B256>,
21}
22
23impl CancunPayloadFields {
24 pub const fn new(parent_beacon_block_root: B256, versioned_hashes: Vec<B256>) -> Self {
26 Self { parent_beacon_block_root, versioned_hashes }
27 }
28}
29
30#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
32#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
33#[cfg_attr(any(test, feature = "arbitrary"), derive(arbitrary::Arbitrary))]
34pub struct MaybeCancunPayloadFields {
35 fields: Option<CancunPayloadFields>,
36}
37
38impl MaybeCancunPayloadFields {
39 pub const fn none() -> Self {
41 Self { fields: None }
42 }
43
44 pub fn into_inner(self) -> Option<CancunPayloadFields> {
46 self.fields
47 }
48
49 pub fn parent_beacon_block_root(&self) -> Option<B256> {
51 self.fields.as_ref().map(|fields| fields.parent_beacon_block_root)
52 }
53
54 pub fn versioned_hashes(&self) -> Option<&Vec<B256>> {
56 self.fields.as_ref().map(|fields| &fields.versioned_hashes)
57 }
58
59 pub const fn as_ref(&self) -> Option<&CancunPayloadFields> {
61 self.fields.as_ref()
62 }
63}
64
65impl From<CancunPayloadFields> for MaybeCancunPayloadFields {
66 #[inline]
67 fn from(fields: CancunPayloadFields) -> Self {
68 Self { fields: Some(fields) }
69 }
70}
71
72impl From<Option<CancunPayloadFields>> for MaybeCancunPayloadFields {
73 #[inline]
74 fn from(fields: Option<CancunPayloadFields>) -> Self {
75 Self { fields }
76 }
77}