File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -66,6 +66,13 @@ impl<'a> SliceReader<'a> {
6666 . ok_or_else ( || Error :: incomplete ( self . input_len ( ) ) )
6767 }
6868 }
69+ /// Creates new [`SliceReader`] without advancing current reader.
70+ pub ( crate ) fn new_nested_reader ( & mut self , len : Length ) -> Result < Self , Error > {
71+ let prefix_len = ( self . position + len) ?;
72+ let mut nested_reader = self . clone ( ) ;
73+ nested_reader. bytes = self . bytes . prefix ( prefix_len) ?;
74+ Ok ( nested_reader)
75+ }
6976}
7077
7178impl < ' a > Reader < ' a > for SliceReader < ' a > {
@@ -92,10 +99,7 @@ impl<'a> Reader<'a> for SliceReader<'a> {
9299 F : FnOnce ( & mut Self ) -> Result < T , E > ,
93100 E : From < Error > ,
94101 {
95- let prefix_len = ( self . position + len) ?;
96- let mut nested_reader = self . clone ( ) ;
97- nested_reader. bytes = self . bytes . prefix ( prefix_len) ?;
98-
102+ let mut nested_reader = self . new_nested_reader ( len) ?;
99103 let ret = f ( & mut nested_reader) ;
100104 self . position = nested_reader. position ;
101105 self . failed = nested_reader. failed ;
You can’t perform that action at this time.
0 commit comments