@@ -284,7 +284,7 @@ where
284
284
let e = self . next ( ) ?;
285
285
match e {
286
286
DeEvent :: Start ( e) => return Ok ( Some ( e) ) ,
287
- DeEvent :: End ( _ ) => return Err ( DeError :: End ) ,
287
+ DeEvent :: End ( e ) => return Err ( DeError :: UnexpectedEnd ( e . name ( ) . to_owned ( ) ) ) ,
288
288
DeEvent :: Eof => return Ok ( None ) ,
289
289
_ => ( ) , // ignore texts
290
290
}
@@ -301,24 +301,24 @@ where
301
301
/// |Event |XML |Handling
302
302
/// |------------------|---------------------------|----------------------------------------
303
303
/// |[`DeEvent::Start`]|`<tag>...</tag>` |Result determined by the second table
304
- /// |[`DeEvent::End`] |`</any-tag>` |Emits [`DeError::End `]
304
+ /// |[`DeEvent::End`] |`</any-tag>` |Emits [`DeError::UnexpectedEnd `]
305
305
/// |[`DeEvent::Text`] |`text content` |Unescapes `text content` and returns it
306
306
/// |[`DeEvent::CData`]|`<![CDATA[cdata content]]>`|Returns `cdata content` unchanged
307
- /// |[`DeEvent::Eof`] | |Emits [`DeError::Eof `]
307
+ /// |[`DeEvent::Eof`] | |Emits [`DeError::UnexpectedEof `]
308
308
///
309
309
/// Second event, consumed if [`DeEvent::Start`] was received:
310
310
///
311
311
/// |Event |XML |Handling
312
312
/// |------------------|---------------------------|----------------------------------------------------------------------------------
313
- /// |[`DeEvent::Start`]|`<any-tag>...</any-tag>` |Emits [`DeError::Start `]
313
+ /// |[`DeEvent::Start`]|`<any-tag>...</any-tag>` |Emits [`DeError::UnexpectedStart `]
314
314
/// |[`DeEvent::End`] |`</tag>` |Returns an empty slice, if close tag matched the open one
315
- /// |[`DeEvent::End`] |`</any-tag>` |Emits [`DeError::End `]
315
+ /// |[`DeEvent::End`] |`</any-tag>` |Emits [`DeError::UnexpectedEnd `]
316
316
/// |[`DeEvent::Text`] |`text content` |Unescapes `text content` and returns it, consumes events up to `</tag>`
317
317
/// |[`DeEvent::CData`]|`<![CDATA[cdata content]]>`|Returns `cdata content` unchanged, consumes events up to `</tag>`
318
- /// |[`DeEvent::Eof`] | |Emits [`DeError::Eof `]
318
+ /// |[`DeEvent::Eof`] | |Emits [`DeError::UnexpectedEof `]
319
319
fn next_text ( & mut self , unescape : bool ) -> Result < BytesCData < ' de > , DeError > {
320
320
match self . next ( ) ? {
321
- DeEvent :: Text ( e) if unescape => e. unescape ( ) . map_err ( |e| DeError :: Xml ( e. into ( ) ) ) ,
321
+ DeEvent :: Text ( e) if unescape => e. unescape ( ) . map_err ( |e| DeError :: InvalidXml ( e. into ( ) ) ) ,
322
322
DeEvent :: Text ( e) => Ok ( BytesCData :: new ( e. into_inner ( ) ) ) ,
323
323
DeEvent :: CData ( e) => Ok ( e) ,
324
324
DeEvent :: Start ( e) => {
@@ -328,20 +328,20 @@ where
328
328
DeEvent :: Text ( t) if unescape => t. unescape ( ) ?,
329
329
DeEvent :: Text ( t) => BytesCData :: new ( t. into_inner ( ) ) ,
330
330
DeEvent :: CData ( t) => t,
331
- DeEvent :: Start ( _ ) => return Err ( DeError :: Start ) ,
331
+ DeEvent :: Start ( s ) => return Err ( DeError :: UnexpectedStart ( s . name ( ) . to_owned ( ) ) ) ,
332
332
// We can get End event in case of `<tag></tag>` or `<tag/>` input
333
333
// Return empty text in that case
334
334
DeEvent :: End ( end) if end. name ( ) == e. name ( ) => {
335
335
return Ok ( BytesCData :: new ( & [ ] as & [ u8 ] ) ) ;
336
336
}
337
- DeEvent :: End ( _ ) => return Err ( DeError :: End ) ,
338
- DeEvent :: Eof => return Err ( DeError :: Eof ) ,
337
+ DeEvent :: End ( end ) => return Err ( DeError :: UnexpectedEnd ( end . name ( ) . to_owned ( ) ) ) ,
338
+ DeEvent :: Eof => return Err ( DeError :: UnexpectedEof ) ,
339
339
} ;
340
340
self . read_to_end ( e. name ( ) ) ?;
341
341
Ok ( t)
342
342
}
343
- DeEvent :: End ( _ ) => Err ( DeError :: End ) ,
344
- DeEvent :: Eof => Err ( DeError :: Eof ) ,
343
+ DeEvent :: End ( e ) => Err ( DeError :: UnexpectedEnd ( e . name ( ) . to_owned ( ) ) ) ,
344
+ DeEvent :: Eof => Err ( DeError :: UnexpectedEof ) ,
345
345
}
346
346
}
347
347
@@ -434,7 +434,7 @@ where
434
434
self . read_to_end ( & name) ?;
435
435
Ok ( value)
436
436
} else {
437
- Err ( DeError :: Start )
437
+ Err ( DeError :: ExpectedStart )
438
438
}
439
439
}
440
440
@@ -508,10 +508,10 @@ where
508
508
/// |Event |XML |Handling
509
509
/// |------------------|---------------------------|-------------------------------------------
510
510
/// |[`DeEvent::Start`]|`<tag>...</tag>` |Calls `visitor.visit_unit()`, consumes all events up to corresponding `End` event
511
- /// |[`DeEvent::End`] |`</tag>` |Emits [`DeError::End`]
511
+ /// |[`DeEvent::End`] |`</tag>` |Emits [`UnexpectedEnd("tag")`]( DeError::UnexpectedEnd)
512
512
/// |[`DeEvent::Text`] |`text content` |Calls `visitor.visit_unit()`. Text content is ignored
513
513
/// |[`DeEvent::CData`]|`<![CDATA[cdata content]]>`|Calls `visitor.visit_unit()`. CDATA content is ignored
514
- /// |[`DeEvent::Eof`] | |Emits [`DeError::Eof`]
514
+ /// |[`DeEvent::Eof`] | |Emits [`UnexpectedEof`]( DeError::UnexpectedEof)
515
515
fn deserialize_unit < V > ( self , visitor : V ) -> Result < V :: Value , DeError >
516
516
where
517
517
V : Visitor < ' de > ,
@@ -522,8 +522,8 @@ where
522
522
visitor. visit_unit ( )
523
523
}
524
524
DeEvent :: Text ( _) | DeEvent :: CData ( _) => visitor. visit_unit ( ) ,
525
- DeEvent :: End ( _ ) => Err ( DeError :: End ) ,
526
- DeEvent :: Eof => Err ( DeError :: Eof ) ,
525
+ DeEvent :: End ( e ) => Err ( DeError :: UnexpectedEnd ( e . name ( ) . to_owned ( ) ) ) ,
526
+ DeEvent :: Eof => Err ( DeError :: UnexpectedEof ) ,
527
527
}
528
528
}
529
529
@@ -630,8 +630,8 @@ where
630
630
{
631
631
match self . next ( ) ? {
632
632
DeEvent :: Start ( e) => self . read_to_end ( e. name ( ) ) ?,
633
- DeEvent :: End ( _ ) => return Err ( DeError :: End ) ,
634
- DeEvent :: Eof => return Err ( DeError :: Eof ) ,
633
+ DeEvent :: End ( e ) => return Err ( DeError :: UnexpectedEnd ( e . name ( ) . to_owned ( ) ) ) ,
634
+ DeEvent :: Eof => return Err ( DeError :: UnexpectedEof ) ,
635
635
_ => ( ) ,
636
636
}
637
637
visitor. visit_unit ( )
@@ -715,7 +715,7 @@ impl<'i, R: BufRead> XmlRead<'i> for IoReader<R> {
715
715
716
716
fn read_to_end ( & mut self , name : & [ u8 ] ) -> Result < ( ) , DeError > {
717
717
match self . reader . read_to_end ( name, & mut self . buf ) {
718
- Err ( Error :: UnexpectedEof ( _) ) => Err ( DeError :: Eof ) ,
718
+ Err ( Error :: UnexpectedEof ( _) ) => Err ( DeError :: UnexpectedEof ) ,
719
719
other => Ok ( other?) ,
720
720
}
721
721
}
@@ -751,7 +751,7 @@ impl<'de> XmlRead<'de> for SliceReader<'de> {
751
751
752
752
fn read_to_end ( & mut self , name : & [ u8 ] ) -> Result < ( ) , DeError > {
753
753
match self . reader . read_to_end_unbuffered ( name) {
754
- Err ( Error :: UnexpectedEof ( _) ) => Err ( DeError :: Eof ) ,
754
+ Err ( Error :: UnexpectedEof ( _) ) => Err ( DeError :: UnexpectedEof ) ,
755
755
other => Ok ( other?) ,
756
756
}
757
757
}
@@ -917,12 +917,12 @@ mod tests {
917
917
#[ test]
918
918
fn next_text ( ) {
919
919
match from_str :: < String > ( r#"</root>"# ) {
920
- Err ( DeError :: Xml ( Error :: EndEventMismatch { expected, found } ) ) => {
920
+ Err ( DeError :: InvalidXml ( Error :: EndEventMismatch { expected, found } ) ) => {
921
921
assert_eq ! ( expected, "" ) ;
922
922
assert_eq ! ( found, "root" ) ;
923
923
}
924
924
x => panic ! (
925
- r#"Expected `Err(Xml (EndEventMismatch("", "root")))`, but found {:?}"# ,
925
+ r#"Expected `Err(InvalidXml (EndEventMismatch("", "root")))`, but found {:?}"# ,
926
926
x
927
927
) ,
928
928
}
@@ -931,12 +931,12 @@ mod tests {
931
931
assert_eq ! ( s, "" ) ;
932
932
933
933
match from_str :: < String > ( r#"<root></other>"# ) {
934
- Err ( DeError :: Xml ( Error :: EndEventMismatch { expected, found } ) ) => {
934
+ Err ( DeError :: InvalidXml ( Error :: EndEventMismatch { expected, found } ) ) => {
935
935
assert_eq ! ( expected, "root" ) ;
936
936
assert_eq ! ( found, "other" ) ;
937
937
}
938
938
x => panic ! (
939
- r#"Expected `Err(Xml (EndEventMismatch("root", "other")))`, but found {:?}"# ,
939
+ r#"Expected `Err(InvalidXml (EndEventMismatch("root", "other")))`, but found {:?}"# ,
940
940
x
941
941
) ,
942
942
}
0 commit comments