stratus/eth/storage/permanent/rocks/types/
slot.rs1use std::fmt::Debug;
2
3use crate::eth::primitives::SlotIndex;
4use crate::eth::primitives::SlotValue;
5use crate::eth::storage::permanent::rocks::SerializeDeserializeWithContext;
6
7#[derive(Clone, Debug, Copy, Default, PartialEq, Eq, bincode::Encode, bincode::Decode, serde::Deserialize, serde::Serialize)]
8#[cfg_attr(test, derive(fake::Dummy))]
9pub struct SlotValueRocksdb([u64; 4]);
10
11impl From<SlotValue> for SlotValueRocksdb {
12 fn from(item: SlotValue) -> Self {
13 SlotValueRocksdb(item.0.into_limbs())
14 }
15}
16
17impl From<SlotValueRocksdb> for SlotValue {
18 fn from(item: SlotValueRocksdb) -> Self {
19 SlotValue::from(item.0)
20 }
21}
22
23#[derive(Clone, Debug, Copy, Default, Hash, PartialEq, Eq, PartialOrd, Ord, bincode::Encode, bincode::Decode)]
24#[cfg_attr(test, derive(fake::Dummy))]
25pub struct SlotIndexRocksdb([u64; 4]);
26
27impl From<SlotIndex> for SlotIndexRocksdb {
28 fn from(item: SlotIndex) -> Self {
29 SlotIndexRocksdb(item.0.into_limbs())
30 }
31}
32
33impl From<SlotIndexRocksdb> for SlotIndex {
34 fn from(item: SlotIndexRocksdb) -> Self {
35 SlotIndex::from(item.0)
36 }
37}
38
39impl serde::Serialize for SlotIndexRocksdb {
40 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
41 where
42 S: serde::Serializer,
43 {
44 let slot_index: SlotIndex = (*self).into();
45 slot_index.serialize(serializer)
46 }
47}
48
49impl<'de> serde::Deserialize<'de> for SlotIndexRocksdb {
50 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
51 where
52 D: serde::Deserializer<'de>,
53 {
54 let slot_index = SlotIndex::deserialize(deserializer)?;
55 Ok(slot_index.into())
56 }
57}
58
59impl SerializeDeserializeWithContext for SlotValueRocksdb {}
60impl SerializeDeserializeWithContext for SlotIndexRocksdb {}