gemachain_program/nonce/state/
current.rs

1use super::Versions;
2use crate::{fee_calculator::FeeCalculator, hash::Hash, pubkey::Pubkey};
3use serde_derive::{Deserialize, Serialize};
4
5#[derive(Debug, Default, Serialize, Deserialize, PartialEq, Clone)]
6pub struct Data {
7    pub authority: Pubkey,
8    pub blockhash: Hash,
9    pub fee_calculator: FeeCalculator,
10}
11
12#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
13pub enum State {
14    Uninitialized,
15    Initialized(Data),
16}
17
18impl Default for State {
19    fn default() -> Self {
20        State::Uninitialized
21    }
22}
23
24impl State {
25    pub fn size() -> usize {
26        let data = Versions::new_current(State::Initialized(Data::default()));
27        bincode::serialized_size(&data).unwrap() as usize
28    }
29}
30
31#[cfg(test)]
32mod test {
33    use super::*;
34
35    #[test]
36    fn default_is_uninitialized() {
37        assert_eq!(State::default(), State::Uninitialized)
38    }
39}