@@ -154,44 +154,40 @@ fn missing_field() -> crate::decode::Error {
154
154
155
155
impl < ' a > CommitRefIter < ' a > {
156
156
#[ 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) )
159
161
}
160
162
161
163
fn next_inner_ (
162
- mut i : & ' a [ u8 ] ,
164
+ input : & mut & ' a [ u8 ] ,
163
165
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 > > {
165
167
use State :: * ;
166
168
Ok ( match state {
167
169
Tree => {
168
170
let tree = ( |i : & mut _ | parse:: header_field ( i, b"tree" , parse:: hex_hash) )
169
171
. context ( StrContext :: Expected ( "tree <40 lowercase hex char>" . into ( ) ) )
170
- . parse_next ( & mut i ) ?;
172
+ . parse_next ( input ) ?;
171
173
* 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
+ }
178
177
}
179
178
Parents => {
180
179
let parent = opt ( |i : & mut _ | parse:: header_field ( i, b"parent" , parse:: hex_hash) )
181
180
. context ( StrContext :: Expected ( "commit <40 lowercase hex char>" . into ( ) ) )
182
- . parse_next ( & mut i ) ?;
181
+ . parse_next ( input ) ?;
183
182
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
+ } ,
190
186
None => {
191
187
* state = State :: Signature {
192
188
of : SignatureKind :: Author ,
193
189
} ;
194
- return Self :: next_inner_ ( i , state) ;
190
+ Self :: next_inner_ ( input , state) ?
195
191
}
196
192
}
197
193
}
@@ -209,23 +205,20 @@ impl<'a> CommitRefIter<'a> {
209
205
} ;
210
206
let signature = ( |i : & mut _ | parse:: header_field ( i, field_name, parse:: signature) )
211
207
. 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
+ }
220
213
}
221
214
Encoding => {
222
215
let encoding = opt ( |i : & mut _ | parse:: header_field ( i, b"encoding" , take_till1 ( NL ) ) )
223
216
. context ( StrContext :: Expected ( "encoding <encoding>" . into ( ) ) )
224
- . parse_next ( & mut i ) ?;
217
+ . parse_next ( input ) ?;
225
218
* state = State :: ExtraHeaders ;
226
219
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) ? ,
229
222
}
230
223
}
231
224
ExtraHeaders => {
@@ -237,22 +230,22 @@ impl<'a> CommitRefIter<'a> {
237
230
} ,
238
231
) ) )
239
232
. context ( StrContext :: Expected ( "<field> <single-line|multi-line>" . into ( ) ) )
240
- . parse_next ( & mut i ) ?;
233
+ . parse_next ( input ) ?;
241
234
match extra_header {
242
- Some ( extra_header) => ( i , Token :: ExtraHeader ( extra_header) ) ,
235
+ Some ( extra_header) => Token :: ExtraHeader ( extra_header) ,
243
236
None => {
244
237
* state = State :: Message ;
245
- return Self :: next_inner_ ( i , state) ;
238
+ Self :: next_inner_ ( input , state) ?
246
239
}
247
240
}
248
241
}
249
242
Message => {
250
- let message = terminated ( decode:: message, eof) . parse_next ( & mut i ) ?;
243
+ let message = terminated ( decode:: message, eof) . parse_next ( input ) ?;
251
244
debug_assert ! (
252
- i . is_empty( ) ,
245
+ input . is_empty( ) ,
253
246
"we should have consumed all data - otherwise iter may go forever"
254
247
) ;
255
- return Ok ( ( i , Token :: Message ( message) ) ) ;
248
+ Token :: Message ( message)
256
249
}
257
250
} )
258
251
}
0 commit comments