solana_runtime/serde_snapshot/
storage.rs1use {
2 crate::accounts_db::AccountStorageEntry,
3 serde::{Deserialize, Serialize},
4};
5
6pub(crate) type SerializedAppendVecId = usize;
8
9#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
11pub struct SerializableAccountStorageEntry {
12 id: SerializedAppendVecId,
13 accounts_current_len: usize,
14}
15
16pub(super) trait SerializableStorage {
17 fn id(&self) -> SerializedAppendVecId;
18 fn current_len(&self) -> usize;
19}
20
21impl SerializableStorage for SerializableAccountStorageEntry {
22 fn id(&self) -> SerializedAppendVecId {
23 self.id
24 }
25 fn current_len(&self) -> usize {
26 self.accounts_current_len
27 }
28}
29
30impl From<&AccountStorageEntry> for SerializableAccountStorageEntry {
31 fn from(rhs: &AccountStorageEntry) -> Self {
32 Self {
33 id: rhs.append_vec_id() as SerializedAppendVecId,
34 accounts_current_len: rhs.accounts.len(),
35 }
36 }
37}
38
39#[cfg(RUSTC_WITH_SPECIALIZATION)]
40impl solana_frozen_abi::abi_example::IgnoreAsHelper for SerializableAccountStorageEntry {}