@@ -828,6 +828,66 @@ where
828
828
}
829
829
}
830
830
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
+
831
891
// --- ALL STATES, WITH State<Db>
832
892
833
893
impl < Db , Insp , TrevmState > Trevm < Db , Insp , TrevmState >
0 commit comments