4444//! ```
4545
4646use {
47- crate :: stake_history:: { StakeHistory , StakeHistoryEntry , StakeHistoryGetEntry , MAX_ENTRIES } ,
47+ crate :: stake_history:: {
48+ StakeHistory , StakeHistoryEntry , StakeHistoryGetEntry , EPOCH_AND_ENTRY_SERIALIZED_SIZE ,
49+ MAX_ENTRIES ,
50+ } ,
4851 solana_clock:: Epoch ,
4952 solana_sysvar:: { get_sysvar, Sysvar } ,
5053 solana_sysvar_id:: declare_sysvar_id,
@@ -58,9 +61,6 @@ impl Sysvar for StakeHistory {}
5861#[ derive( Debug , PartialEq , Eq , Clone ) ]
5962pub struct StakeHistorySysvar ( pub Epoch ) ;
6063
61- // precompute so we can statically allocate buffer
62- const EPOCH_AND_ENTRY_SERIALIZED_SIZE : u64 = 32 ;
63-
6464impl StakeHistoryGetEntry for StakeHistorySysvar {
6565 fn get_entry ( & self , target_epoch : Epoch ) -> Option < StakeHistoryEntry > {
6666 let current_epoch = self . 0 ;
@@ -80,15 +80,15 @@ impl StakeHistoryGetEntry for StakeHistorySysvar {
8080
8181 // offset is the number of bytes to our desired entry, including eight for vector length
8282 let offset = epoch_delta
83- . checked_mul ( EPOCH_AND_ENTRY_SERIALIZED_SIZE ) ?
83+ . checked_mul ( EPOCH_AND_ENTRY_SERIALIZED_SIZE as u64 ) ?
8484 . checked_add ( std:: mem:: size_of :: < u64 > ( ) as u64 ) ?;
8585
86- let mut entry_buf = [ 0 ; EPOCH_AND_ENTRY_SERIALIZED_SIZE as usize ] ;
86+ let mut entry_buf = [ 0 ; EPOCH_AND_ENTRY_SERIALIZED_SIZE ] ;
8787 let result = get_sysvar (
8888 & mut entry_buf,
8989 & id ( ) ,
9090 offset,
91- EPOCH_AND_ENTRY_SERIALIZED_SIZE ,
91+ EPOCH_AND_ENTRY_SERIALIZED_SIZE as u64 ,
9292 ) ;
9393
9494 match result {
@@ -147,6 +147,8 @@ mod tests {
147147
148148 #[ test]
149149 fn test_size_of ( ) {
150+ use crate :: stake_history:: SIZE ;
151+
150152 let mut stake_history = StakeHistory :: default ( ) ;
151153 for i in 0 ..MAX_ENTRIES as u64 {
152154 stake_history. add (
@@ -160,16 +162,16 @@ mod tests {
160162
161163 assert_eq ! (
162164 bincode:: serialized_size( & stake_history) . unwrap( ) as usize ,
163- size_of :: < u64 > ( ) + MAX_ENTRIES * EPOCH_AND_ENTRY_SERIALIZED_SIZE as usize
165+ SIZE ,
164166 ) ;
165167
166168 let stake_history_inner: Vec < ( Epoch , StakeHistoryEntry ) > =
167169 bincode:: deserialize ( & bincode:: serialize ( & stake_history) . unwrap ( ) ) . unwrap ( ) ;
168170 let epoch_entry = stake_history_inner. into_iter ( ) . next ( ) . unwrap ( ) ;
169171
170172 assert_eq ! (
171- bincode:: serialized_size( & epoch_entry) . unwrap( ) ,
172- EPOCH_AND_ENTRY_SERIALIZED_SIZE
173+ bincode:: serialized_size( & epoch_entry) . unwrap( ) as usize ,
174+ EPOCH_AND_ENTRY_SERIALIZED_SIZE ,
173175 ) ;
174176 }
175177
0 commit comments