alloy_eip7928/
storage_change.rs1use crate::BlockAccessIndex;
5use alloy_primitives::U256;
6
7#[derive(Debug, Clone, Default, PartialEq, Eq, Hash)]
9#[cfg_attr(feature = "rlp", derive(alloy_rlp::RlpEncodable, alloy_rlp::RlpDecodable))]
10#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
11#[cfg_attr(feature = "borsh", derive(borsh::BorshSerialize, borsh::BorshDeserialize))]
12#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
13#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
14pub struct StorageChange {
15 #[cfg_attr(
17 feature = "serde",
18 serde(rename = "index", alias = "blockAccessIndex", alias = "txIndex")
19 )]
20 pub block_access_index: BlockAccessIndex,
21 #[cfg_attr(
23 feature = "serde",
24 serde(rename = "value", alias = "newValue", alias = "postValue")
25 )]
26 pub new_value: U256,
27}
28
29impl StorageChange {
30 #[inline]
32 pub const fn new(block_access_index: BlockAccessIndex, new_value: U256) -> Self {
33 Self { block_access_index, new_value }
34 }
35
36 #[inline]
38 pub fn is_zero(&self) -> bool {
39 self.new_value.is_zero()
40 }
41
42 #[inline]
44 pub fn is_at_index(&self, block_index: BlockAccessIndex) -> bool {
45 self.block_access_index == block_index
46 }
47
48 #[inline]
50 pub const fn with_value(&self, value: U256) -> Self {
51 Self { block_access_index: self.block_access_index, new_value: value }
52 }
53}