@@ -288,35 +288,34 @@ impl PullParser {
288
288
// While lexer gives us Ok(maybe_token) -- we loop.
289
289
// Upon having a complete XML-event -- we return from the whole function.
290
290
match self . lexer . next_token ( r) {
291
- Ok ( maybe_token) =>
292
- match maybe_token {
293
- None => break ,
294
- Some ( token) =>
295
- match self . dispatch_token ( token) {
296
- None => { } // continue
297
- Some ( Ok ( XmlEvent :: EndDocument ) ) =>
298
- return {
299
- self . next_pos ( ) ;
300
- self . set_final_result ( Ok ( XmlEvent :: EndDocument ) )
301
- } ,
302
- Some ( Ok ( xml_event) ) =>
303
- return {
304
- self . next_pos ( ) ;
305
- Ok ( xml_event)
306
- } ,
307
- Some ( Err ( xml_error) ) =>
308
- return {
309
- self . next_pos ( ) ;
310
- self . set_final_result ( Err ( xml_error) )
311
- } ,
312
- }
313
- } ,
291
+ Ok ( Some ( token) ) => {
292
+ match self . dispatch_token ( token) {
293
+ None => { } // continue
294
+ Some ( Ok ( XmlEvent :: EndDocument ) ) => {
295
+ self . next_pos ( ) ;
296
+ return self . set_final_result ( Ok ( XmlEvent :: EndDocument ) )
297
+ } ,
298
+ Some ( Ok ( xml_event) ) => {
299
+ self . next_pos ( ) ;
300
+ return Ok ( xml_event)
301
+ } ,
302
+ Some ( Err ( xml_error) ) => {
303
+ self . next_pos ( ) ;
304
+ return self . set_final_result ( Err ( xml_error) )
305
+ } ,
306
+ }
307
+ } ,
308
+ Ok ( None ) => break ,
314
309
Err ( lexer_error) =>
315
310
return self . set_final_result ( Err ( lexer_error) ) ,
316
311
}
317
312
}
318
313
319
- // Handle end of stream
314
+ self . handle_eof ( )
315
+ }
316
+
317
+ /// Handle end of stream
318
+ fn handle_eof ( & mut self ) -> std:: result:: Result < XmlEvent , super :: Error > {
320
319
// Forward pos to the lexer head
321
320
self . next_pos ( ) ;
322
321
let ev = if self . depth ( ) == 0 {
@@ -339,6 +338,7 @@ impl PullParser {
339
338
340
339
// This function is to be called when a terminal event is reached.
341
340
// The function sets up the `self.final_result` into `Some(result)` and return `result`.
341
+ #[ inline]
342
342
fn set_final_result ( & mut self , result : Result ) -> Result {
343
343
self . final_result = Some ( result. clone ( ) ) ;
344
344
result
@@ -363,6 +363,7 @@ impl PullParser {
363
363
self . pos . push ( self . lexer . position ( ) ) ;
364
364
}
365
365
366
+ #[ inline( never) ]
366
367
fn dispatch_token ( & mut self , t : Token ) -> Option < Result > {
367
368
match self . st {
368
369
State :: OutsideTag => self . outside_tag ( t) ,
0 commit comments