@@ -221,6 +221,7 @@ pub use crate::errors::serialize::DeError;
221221use crate :: {
222222 errors:: Error ,
223223 events:: { BytesCData , BytesEnd , BytesStart , BytesText , Event } ,
224+ name:: QName ,
224225 reader:: Decoder ,
225226 Reader ,
226227} ;
@@ -514,16 +515,16 @@ where
514515 match self . write . back ( ) {
515516 // Skip all subtree, if we skip a start event
516517 Some ( DeEvent :: Start ( e) ) => {
517- let end = e. name ( ) . to_owned ( ) ;
518+ let end = e. name ( ) . as_ref ( ) . to_owned ( ) ;
518519 let mut depth = 0 ;
519520 loop {
520521 let event = self . next ( ) ?;
521522 match event {
522- DeEvent :: Start ( ref e) if e. name ( ) == end => {
523+ DeEvent :: Start ( ref e) if e. name ( ) . as_ref ( ) == end => {
523524 self . skip_event ( event) ?;
524525 depth += 1 ;
525526 }
526- DeEvent :: End ( ref e) if e. name ( ) == end => {
527+ DeEvent :: End ( ref e) if e. name ( ) . as_ref ( ) == end => {
527528 self . skip_event ( event) ?;
528529 if depth == 0 {
529530 return Ok ( ( ) ) ;
@@ -571,7 +572,9 @@ where
571572 let e = self . next ( ) ?;
572573 match e {
573574 DeEvent :: Start ( e) => return Ok ( Some ( e) ) ,
574- DeEvent :: End ( e) => return Err ( DeError :: UnexpectedEnd ( e. name ( ) . to_owned ( ) ) ) ,
575+ DeEvent :: End ( e) => {
576+ return Err ( DeError :: UnexpectedEnd ( e. name ( ) . as_ref ( ) . to_owned ( ) ) )
577+ }
575578 DeEvent :: Eof => return Ok ( None ) ,
576579 _ => ( ) , // ignore texts
577580 }
@@ -631,20 +634,24 @@ where
631634 DeEvent :: Text ( t) if unescape => t. unescape ( ) ?,
632635 DeEvent :: Text ( t) => BytesCData :: new ( t. into_inner ( ) ) ,
633636 DeEvent :: CData ( t) => t,
634- DeEvent :: Start ( s) => return Err ( DeError :: UnexpectedStart ( s. name ( ) . to_owned ( ) ) ) ,
637+ DeEvent :: Start ( s) => {
638+ return Err ( DeError :: UnexpectedStart ( s. name ( ) . as_ref ( ) . to_owned ( ) ) )
639+ }
635640 // We can get End event in case of `<tag></tag>` or `<tag/>` input
636641 // Return empty text in that case
637642 DeEvent :: End ( end) if end. name ( ) == e. name ( ) => {
638643 return Ok ( BytesCData :: new ( & [ ] as & [ u8 ] ) ) ;
639644 }
640- DeEvent :: End ( end) => return Err ( DeError :: UnexpectedEnd ( end. name ( ) . to_owned ( ) ) ) ,
645+ DeEvent :: End ( end) => {
646+ return Err ( DeError :: UnexpectedEnd ( end. name ( ) . as_ref ( ) . to_owned ( ) ) )
647+ }
641648 DeEvent :: Eof => return Err ( DeError :: UnexpectedEof ) ,
642649 } ;
643650 self . read_to_end ( e. name ( ) ) ?;
644651 Ok ( t)
645652 }
646- DeEvent :: Start ( e) => Err ( DeError :: UnexpectedStart ( e. name ( ) . to_owned ( ) ) ) ,
647- DeEvent :: End ( e) => Err ( DeError :: UnexpectedEnd ( e. name ( ) . to_owned ( ) ) ) ,
653+ DeEvent :: Start ( e) => Err ( DeError :: UnexpectedStart ( e. name ( ) . as_ref ( ) . to_owned ( ) ) ) ,
654+ DeEvent :: End ( e) => Err ( DeError :: UnexpectedEnd ( e. name ( ) . as_ref ( ) . to_owned ( ) ) ) ,
648655 DeEvent :: Eof => Err ( DeError :: UnexpectedEof ) ,
649656 }
650657 }
@@ -658,7 +665,7 @@ where
658665 /// Drops all events until event with [name](BytesEnd::name()) `name` won't be
659666 /// dropped. This method should be called after [`Self::next()`]
660667 #[ cfg( feature = "overlapped-lists" ) ]
661- fn read_to_end ( & mut self , name : & [ u8 ] ) -> Result < ( ) , DeError > {
668+ fn read_to_end ( & mut self , name : QName ) -> Result < ( ) , DeError > {
662669 let mut depth = 0 ;
663670 loop {
664671 match self . read . pop_front ( ) {
@@ -682,7 +689,7 @@ where
682689 }
683690 }
684691 #[ cfg( not( feature = "overlapped-lists" ) ) ]
685- fn read_to_end ( & mut self , name : & [ u8 ] ) -> Result < ( ) , DeError > {
692+ fn read_to_end ( & mut self , name : QName ) -> Result < ( ) , DeError > {
686693 // First one might be in self.peek
687694 match self . next ( ) ? {
688695 DeEvent :: Start ( e) => self . reader . read_to_end ( e. name ( ) ) ?,
@@ -751,10 +758,10 @@ where
751758 {
752759 // Try to go to the next `<tag ...>...</tag>` or `<tag .../>`
753760 if let Some ( e) = self . next_start ( ) ? {
754- let name = e. name ( ) . to_vec ( ) ;
761+ let name = e. name ( ) . as_ref ( ) . to_vec ( ) ;
755762 let map = map:: MapAccess :: new ( self , e, fields) ?;
756763 let value = visitor. visit_map ( map) ?;
757- self . read_to_end ( & name) ?;
764+ self . read_to_end ( QName ( & name) ) ?;
758765 Ok ( value)
759766 } else {
760767 Err ( DeError :: ExpectedStart )
@@ -789,7 +796,7 @@ where
789796 visitor. visit_unit ( )
790797 }
791798 DeEvent :: Text ( _) | DeEvent :: CData ( _) => visitor. visit_unit ( ) ,
792- DeEvent :: End ( e) => Err ( DeError :: UnexpectedEnd ( e. name ( ) . to_owned ( ) ) ) ,
799+ DeEvent :: End ( e) => Err ( DeError :: UnexpectedEnd ( e. name ( ) . as_ref ( ) . to_owned ( ) ) ) ,
793800 DeEvent :: Eof => Err ( DeError :: UnexpectedEof ) ,
794801 }
795802 }
@@ -893,7 +900,7 @@ where
893900 {
894901 match self . next ( ) ? {
895902 DeEvent :: Start ( e) => self . read_to_end ( e. name ( ) ) ?,
896- DeEvent :: End ( e) => return Err ( DeError :: UnexpectedEnd ( e. name ( ) . to_owned ( ) ) ) ,
903+ DeEvent :: End ( e) => return Err ( DeError :: UnexpectedEnd ( e. name ( ) . as_ref ( ) . to_owned ( ) ) ) ,
897904 DeEvent :: Eof => return Err ( DeError :: UnexpectedEof ) ,
898905 _ => ( ) ,
899906 }
@@ -925,7 +932,7 @@ pub trait XmlRead<'i> {
925932
926933 /// Skips until end element is found. Unlike `next()` it will not allocate
927934 /// when it cannot satisfy the lifetime.
928- fn read_to_end ( & mut self , name : & [ u8 ] ) -> Result < ( ) , DeError > ;
935+ fn read_to_end ( & mut self , name : QName ) -> Result < ( ) , DeError > ;
929936
930937 /// A copy of the reader's decoder used to decode strings.
931938 fn decoder ( & self ) -> Decoder ;
@@ -960,7 +967,7 @@ impl<'i, R: BufRead> XmlRead<'i> for IoReader<R> {
960967 event
961968 }
962969
963- fn read_to_end ( & mut self , name : & [ u8 ] ) -> Result < ( ) , DeError > {
970+ fn read_to_end ( & mut self , name : QName ) -> Result < ( ) , DeError > {
964971 match self . reader . read_to_end ( name, & mut self . buf ) {
965972 Err ( Error :: UnexpectedEof ( _) ) => Err ( DeError :: UnexpectedEof ) ,
966973 other => Ok ( other?) ,
@@ -996,7 +1003,7 @@ impl<'de> XmlRead<'de> for SliceReader<'de> {
9961003 }
9971004 }
9981005
999- fn read_to_end ( & mut self , name : & [ u8 ] ) -> Result < ( ) , DeError > {
1006+ fn read_to_end ( & mut self , name : QName ) -> Result < ( ) , DeError > {
10001007 match self . reader . read_to_end_unbuffered ( name) {
10011008 Err ( Error :: UnexpectedEof ( _) ) => Err ( DeError :: UnexpectedEof ) ,
10021009 other => Ok ( other?) ,
@@ -1212,7 +1219,7 @@ mod tests {
12121219 de. next( ) . unwrap( ) ,
12131220 Start ( BytesStart :: borrowed_name( b"target" ) )
12141221 ) ;
1215- de. read_to_end ( b"target" ) . unwrap ( ) ;
1222+ de. read_to_end ( QName ( b"target" ) ) . unwrap ( ) ;
12161223 assert_eq ! ( de. read, vec![ ] ) ;
12171224 assert_eq ! (
12181225 de. write,
@@ -1252,7 +1259,7 @@ mod tests {
12521259 de. next( ) . unwrap( ) ,
12531260 Start ( BytesStart :: borrowed_name( b"skip" ) )
12541261 ) ;
1255- de. read_to_end ( b"skip" ) . unwrap ( ) ;
1262+ de. read_to_end ( QName ( b"skip" ) ) . unwrap ( ) ;
12561263
12571264 assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: borrowed( b"root" ) ) ) ;
12581265 }
@@ -1313,7 +1320,7 @@ mod tests {
13131320 de. next( ) . unwrap( ) ,
13141321 Start ( BytesStart :: borrowed( br#"tag a="1""# , 3 ) )
13151322 ) ;
1316- assert_eq ! ( de. read_to_end( b"tag" ) . unwrap( ) , ( ) ) ;
1323+ assert_eq ! ( de. read_to_end( QName ( b"tag" ) ) . unwrap( ) , ( ) ) ;
13171324
13181325 assert_eq ! (
13191326 de. next( ) . unwrap( ) ,
@@ -1329,7 +1336,7 @@ mod tests {
13291336 de. next( ) . unwrap( ) ,
13301337 Start ( BytesStart :: borrowed( b"self-closed" , 11 ) )
13311338 ) ;
1332- assert_eq ! ( de. read_to_end( b"self-closed" ) . unwrap( ) , ( ) ) ;
1339+ assert_eq ! ( de. read_to_end( QName ( b"self-closed" ) ) . unwrap( ) , ( ) ) ;
13331340
13341341 assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: borrowed( b"root" ) ) ) ;
13351342 assert_eq ! ( de. next( ) . unwrap( ) , Eof ) ;
@@ -1432,7 +1439,7 @@ mod tests {
14321439 reader. next( ) . unwrap( ) ,
14331440 DeEvent :: Start ( BytesStart :: borrowed( b"item " , 4 ) )
14341441 ) ;
1435- reader. read_to_end ( b"item" ) . unwrap ( ) ;
1442+ reader. read_to_end ( QName ( b"item" ) ) . unwrap ( ) ;
14361443 assert_eq ! ( reader. next( ) . unwrap( ) , DeEvent :: Eof ) ;
14371444 }
14381445
0 commit comments