@@ -154,44 +154,40 @@ fn missing_field() -> crate::decode::Error {
154154
155155impl < ' a > CommitRefIter < ' a > {
156156 #[ inline]
157- fn next_inner ( i : & ' a [ u8 ] , state : & mut State ) -> Result < ( & ' a [ u8 ] , Token < ' a > ) , crate :: decode:: Error > {
158- Self :: next_inner_ ( i, state) . map_err ( crate :: decode:: Error :: with_err)
157+ fn next_inner ( mut i : & ' a [ u8 ] , state : & mut State ) -> Result < ( & ' a [ u8 ] , Token < ' a > ) , crate :: decode:: Error > {
158+ let input = & mut i;
159+ let token = Self :: next_inner_ ( input, state) . map_err ( crate :: decode:: Error :: with_err) ?;
160+ Ok ( ( input, token) )
159161 }
160162
161163 fn next_inner_ (
162- mut i : & ' a [ u8 ] ,
164+ input : & mut & ' a [ u8 ] ,
163165 state : & mut State ,
164- ) -> Result < ( & ' a [ u8 ] , Token < ' a > ) , winnow:: error:: ErrMode < crate :: decode:: ParseError > > {
166+ ) -> Result < Token < ' a > , winnow:: error:: ErrMode < crate :: decode:: ParseError > > {
165167 use State :: * ;
166168 Ok ( match state {
167169 Tree => {
168170 let tree = ( |i : & mut _ | parse:: header_field ( i, b"tree" , parse:: hex_hash) )
169171 . context ( StrContext :: Expected ( "tree <40 lowercase hex char>" . into ( ) ) )
170- . parse_next ( & mut i ) ?;
172+ . parse_next ( input ) ?;
171173 * state = State :: Parents ;
172- (
173- i,
174- Token :: Tree {
175- id : ObjectId :: from_hex ( tree) . expect ( "parsing validation" ) ,
176- } ,
177- )
174+ Token :: Tree {
175+ id : ObjectId :: from_hex ( tree) . expect ( "parsing validation" ) ,
176+ }
178177 }
179178 Parents => {
180179 let parent = opt ( |i : & mut _ | parse:: header_field ( i, b"parent" , parse:: hex_hash) )
181180 . context ( StrContext :: Expected ( "commit <40 lowercase hex char>" . into ( ) ) )
182- . parse_next ( & mut i ) ?;
181+ . parse_next ( input ) ?;
183182 match parent {
184- Some ( parent) => (
185- i,
186- Token :: Parent {
187- id : ObjectId :: from_hex ( parent) . expect ( "parsing validation" ) ,
188- } ,
189- ) ,
183+ Some ( parent) => Token :: Parent {
184+ id : ObjectId :: from_hex ( parent) . expect ( "parsing validation" ) ,
185+ } ,
190186 None => {
191187 * state = State :: Signature {
192188 of : SignatureKind :: Author ,
193189 } ;
194- return Self :: next_inner_ ( i , state) ;
190+ Self :: next_inner_ ( input , state) ?
195191 }
196192 }
197193 }
@@ -209,23 +205,20 @@ impl<'a> CommitRefIter<'a> {
209205 } ;
210206 let signature = ( |i : & mut _ | parse:: header_field ( i, field_name, parse:: signature) )
211207 . context ( StrContext :: Expected ( err_msg. into ( ) ) )
212- . parse_next ( & mut i) ?;
213- (
214- i,
215- match who {
216- SignatureKind :: Author => Token :: Author { signature } ,
217- SignatureKind :: Committer => Token :: Committer { signature } ,
218- } ,
219- )
208+ . parse_next ( input) ?;
209+ match who {
210+ SignatureKind :: Author => Token :: Author { signature } ,
211+ SignatureKind :: Committer => Token :: Committer { signature } ,
212+ }
220213 }
221214 Encoding => {
222215 let encoding = opt ( |i : & mut _ | parse:: header_field ( i, b"encoding" , take_till1 ( NL ) ) )
223216 . context ( StrContext :: Expected ( "encoding <encoding>" . into ( ) ) )
224- . parse_next ( & mut i ) ?;
217+ . parse_next ( input ) ?;
225218 * state = State :: ExtraHeaders ;
226219 match encoding {
227- Some ( encoding) => ( i , Token :: Encoding ( encoding. as_bstr ( ) ) ) ,
228- None => return Self :: next_inner_ ( i , state) ,
220+ Some ( encoding) => Token :: Encoding ( encoding. as_bstr ( ) ) ,
221+ None => Self :: next_inner_ ( input , state) ? ,
229222 }
230223 }
231224 ExtraHeaders => {
@@ -237,22 +230,22 @@ impl<'a> CommitRefIter<'a> {
237230 } ,
238231 ) ) )
239232 . context ( StrContext :: Expected ( "<field> <single-line|multi-line>" . into ( ) ) )
240- . parse_next ( & mut i ) ?;
233+ . parse_next ( input ) ?;
241234 match extra_header {
242- Some ( extra_header) => ( i , Token :: ExtraHeader ( extra_header) ) ,
235+ Some ( extra_header) => Token :: ExtraHeader ( extra_header) ,
243236 None => {
244237 * state = State :: Message ;
245- return Self :: next_inner_ ( i , state) ;
238+ Self :: next_inner_ ( input , state) ?
246239 }
247240 }
248241 }
249242 Message => {
250- let message = terminated ( decode:: message, eof) . parse_next ( & mut i ) ?;
243+ let message = terminated ( decode:: message, eof) . parse_next ( input ) ?;
251244 debug_assert ! (
252- i . is_empty( ) ,
245+ input . is_empty( ) ,
253246 "we should have consumed all data - otherwise iter may go forever"
254247 ) ;
255- return Ok ( ( i , Token :: Message ( message) ) ) ;
248+ Token :: Message ( message)
256249 }
257250 } )
258251 }
0 commit comments