2424 state : & ' a ParallelState < DB > ,
2525 commit_result : Result < ( ) , GrevmError < DB :: Error > > ,
2626 disable_nonce_check : bool ,
27- /// Block number for prewarm task validation.
2827 block_number : u64 ,
29- /// Optional sender for MPT prewarm tasks.
3028 prewarm_sender : Option < mpsc:: UnboundedSender < PrewarmTask > > ,
3129}
3230
9896 // integrity and prevent double-spending attacks.
9997 let ResultAndState { result, state, lazy_reward } = result_and_state;
10098
101- // Clone state for prewarm task before it's moved
102- let state_for_prewarm = if self . prewarm_sender . is_some ( ) {
103- Some ( state. clone ( ) )
104- } else {
105- None
106- } ;
99+ let state_for_prewarm = self . prewarm_sender . as_ref ( ) . map ( |_| state. clone ( ) ) ;
107100
108101 if !self . disable_nonce_check {
109102 match self . state . basic_ref ( tx_env. caller ) {
@@ -156,7 +149,10 @@ where
156149 assert ! ( self . state_mut( ) . increment_balances( vec![ ( self . coinbase, lazy_reward) ] ) . is_ok( ) ) ;
157150
158151 // Send prewarm task for MPT prewarming if sender is available
159- if let ( Some ( ref sender) , Some ( state) ) = ( self . prewarm_sender . as_ref ( ) , state_for_prewarm) {
152+ if let Some ( ref sender) = self . prewarm_sender . as_ref ( ) {
153+ // state_for_prewarm is Some if and only if prewarm_sender is Some
154+ let state = state_for_prewarm
155+ . expect ( "state_for_prewarm should be Some when prewarm_sender is Some" ) ;
160156 let _ = sender. send ( PrewarmTask {
161157 block_number : self . block_number ,
162158 result_and_state : ResultAndState {
@@ -165,7 +161,9 @@ where
165161 gas_used : 0 ,
166162 gas_refunded : 0 ,
167163 logs : vec ! [ ] ,
168- output : revm_context:: result:: Output :: Call ( revm_primitives:: Bytes :: default ( ) ) ,
164+ output : revm_context:: result:: Output :: Call (
165+ revm_primitives:: Bytes :: default ( ) ,
166+ ) ,
169167 } ,
170168 state,
171169 lazy_reward,
0 commit comments