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