@@ -828,6 +828,66 @@ where
828828    } 
829829} 
830830
831+ // Layered inspector 
832+ impl < Db ,  Outer ,  Inner ,  TrevmState >  Trevm < Db ,  Layered < Outer ,  Inner > ,  TrevmState > 
833+ where 
834+     Db :  Database , 
835+     Outer :  Inspector < Ctx < Db > > , 
836+     Inner :  Inspector < Ctx < Db > > , 
837+ { 
838+     /// Remove the outer-layer inspector, leaving the inner-layer inspector in 
839+ /// place. 
840+ pub  fn  take_outer ( self )  -> ( Outer ,  Trevm < Db ,  Inner ,  TrevmState > )  { 
841+         let  ( outer,  inner)  = self . inner . inspector . into_parts ( ) ; 
842+ 
843+         ( 
844+             outer, 
845+             Trevm  { 
846+                 inner :  Box :: new ( Evm  { 
847+                     ctx :  self . inner . ctx , 
848+                     inspector :  inner, 
849+                     instruction :  self . inner . instruction , 
850+                     precompiles :  self . inner . precompiles , 
851+                     frame_stack :  self . inner . frame_stack , 
852+                 } ) , 
853+                 state :  self . state , 
854+             } , 
855+         ) 
856+     } 
857+ 
858+     /// Remove the outer-layer inspector, leaving the inner-layer inspector in 
859+ /// place. 
860+ pub  fn  remove_outer ( self )  -> Trevm < Db ,  Inner ,  TrevmState >  { 
861+         self . take_outer ( ) . 1 
862+     } 
863+ 
864+     /// Remove the inner-layer inspector, leaving the outer-layer inspector in 
865+ /// place. 
866+ pub  fn  take_inner ( self )  -> ( Inner ,  Trevm < Db ,  Outer ,  TrevmState > )  { 
867+         let  ( outer,  inner)  = self . inner . inspector . into_parts ( ) ; 
868+ 
869+         ( 
870+             inner, 
871+             Trevm  { 
872+                 inner :  Box :: new ( Evm  { 
873+                     ctx :  self . inner . ctx , 
874+                     inspector :  outer, 
875+                     instruction :  self . inner . instruction , 
876+                     precompiles :  self . inner . precompiles , 
877+                     frame_stack :  self . inner . frame_stack , 
878+                 } ) , 
879+                 state :  self . state , 
880+             } , 
881+         ) 
882+     } 
883+ 
884+     /// Remove the inner-layer inspector, leaving the outer-layer inspector in 
885+ /// place. 
886+ pub  fn  remove_inner ( self )  -> Trevm < Db ,  Outer ,  TrevmState >  { 
887+         self . take_inner ( ) . 1 
888+     } 
889+ } 
890+ 
831891// --- ALL STATES, WITH State<Db> 
832892
833893impl < Db ,  Insp ,  TrevmState >  Trevm < Db ,  Insp ,  TrevmState > 
0 commit comments