@@ -221,6 +221,7 @@ pub use crate::errors::serialize::DeError;
221
221
use crate :: {
222
222
errors:: Error ,
223
223
events:: { BytesCData , BytesEnd , BytesStart , BytesText , Event } ,
224
+ name:: QName ,
224
225
reader:: Decoder ,
225
226
Reader ,
226
227
} ;
@@ -646,7 +647,7 @@ where
646
647
}
647
648
DeEvent :: Eof => return Err ( DeError :: UnexpectedEof ) ,
648
649
} ;
649
- self . read_to_end ( e. name ( ) . as_ref ( ) ) ?;
650
+ self . read_to_end ( e. name ( ) ) ?;
650
651
Ok ( t)
651
652
}
652
653
DeEvent :: Start ( e) => Err ( DeError :: UnexpectedStart ( e. name ( ) . as_ref ( ) . to_owned ( ) ) ) ,
@@ -664,14 +665,14 @@ where
664
665
/// Drops all events until event with [name](BytesEnd::name()) `name` won't be
665
666
/// dropped. This method should be called after [`Self::next()`]
666
667
#[ cfg( feature = "overlapped-lists" ) ]
667
- fn read_to_end ( & mut self , name : & [ u8 ] ) -> Result < ( ) , DeError > {
668
+ fn read_to_end ( & mut self , name : QName ) -> Result < ( ) , DeError > {
668
669
let mut depth = 0 ;
669
670
loop {
670
671
match self . read . pop_front ( ) {
671
- Some ( DeEvent :: Start ( e) ) if e. name ( ) . as_ref ( ) == name => {
672
+ Some ( DeEvent :: Start ( e) ) if e. name ( ) == name => {
672
673
depth += 1 ;
673
674
}
674
- Some ( DeEvent :: End ( e) ) if e. name ( ) . as_ref ( ) == name => {
675
+ Some ( DeEvent :: End ( e) ) if e. name ( ) == name => {
675
676
if depth == 0 {
676
677
return Ok ( ( ) ) ;
677
678
}
@@ -688,11 +689,11 @@ where
688
689
}
689
690
}
690
691
#[ cfg( not( feature = "overlapped-lists" ) ) ]
691
- fn read_to_end ( & mut self , name : & [ u8 ] ) -> Result < ( ) , DeError > {
692
+ fn read_to_end ( & mut self , name : QName ) -> Result < ( ) , DeError > {
692
693
// First one might be in self.peek
693
694
match self . next ( ) ? {
694
- DeEvent :: Start ( e) => self . reader . read_to_end ( e. name ( ) . as_ref ( ) ) ?,
695
- DeEvent :: End ( e) if e. name ( ) . as_ref ( ) == name => return Ok ( ( ) ) ,
695
+ DeEvent :: Start ( e) => self . reader . read_to_end ( e. name ( ) ) ?,
696
+ DeEvent :: End ( e) if e. name ( ) == name => return Ok ( ( ) ) ,
696
697
_ => ( ) ,
697
698
}
698
699
self . reader . read_to_end ( name)
@@ -760,7 +761,7 @@ where
760
761
let name = e. name ( ) . as_ref ( ) . to_vec ( ) ;
761
762
let map = map:: MapAccess :: new ( self , e, fields) ?;
762
763
let value = visitor. visit_map ( map) ?;
763
- self . read_to_end ( & name) ?;
764
+ self . read_to_end ( QName ( & name) ) ?;
764
765
Ok ( value)
765
766
} else {
766
767
Err ( DeError :: ExpectedStart )
@@ -791,7 +792,7 @@ where
791
792
{
792
793
match self . next ( ) ? {
793
794
DeEvent :: Start ( s) => {
794
- self . read_to_end ( s. name ( ) . as_ref ( ) ) ?;
795
+ self . read_to_end ( s. name ( ) ) ?;
795
796
visitor. visit_unit ( )
796
797
}
797
798
DeEvent :: Text ( _) | DeEvent :: CData ( _) => visitor. visit_unit ( ) ,
@@ -898,7 +899,7 @@ where
898
899
V : Visitor < ' de > ,
899
900
{
900
901
match self . next ( ) ? {
901
- DeEvent :: Start ( e) => self . read_to_end ( e. name ( ) . as_ref ( ) ) ?,
902
+ DeEvent :: Start ( e) => self . read_to_end ( e. name ( ) ) ?,
902
903
DeEvent :: End ( e) => return Err ( DeError :: UnexpectedEnd ( e. name ( ) . as_ref ( ) . to_owned ( ) ) ) ,
903
904
DeEvent :: Eof => return Err ( DeError :: UnexpectedEof ) ,
904
905
_ => ( ) ,
@@ -931,7 +932,7 @@ pub trait XmlRead<'i> {
931
932
932
933
/// Skips until end element is found. Unlike `next()` it will not allocate
933
934
/// when it cannot satisfy the lifetime.
934
- fn read_to_end ( & mut self , name : & [ u8 ] ) -> Result < ( ) , DeError > ;
935
+ fn read_to_end ( & mut self , name : QName ) -> Result < ( ) , DeError > ;
935
936
936
937
/// A copy of the reader's decoder used to decode strings.
937
938
fn decoder ( & self ) -> Decoder ;
@@ -966,7 +967,7 @@ impl<'i, R: BufRead> XmlRead<'i> for IoReader<R> {
966
967
event
967
968
}
968
969
969
- fn read_to_end ( & mut self , name : & [ u8 ] ) -> Result < ( ) , DeError > {
970
+ fn read_to_end ( & mut self , name : QName ) -> Result < ( ) , DeError > {
970
971
match self . reader . read_to_end ( name, & mut self . buf ) {
971
972
Err ( Error :: UnexpectedEof ( _) ) => Err ( DeError :: UnexpectedEof ) ,
972
973
other => Ok ( other?) ,
@@ -1002,7 +1003,7 @@ impl<'de> XmlRead<'de> for SliceReader<'de> {
1002
1003
}
1003
1004
}
1004
1005
1005
- fn read_to_end ( & mut self , name : & [ u8 ] ) -> Result < ( ) , DeError > {
1006
+ fn read_to_end ( & mut self , name : QName ) -> Result < ( ) , DeError > {
1006
1007
match self . reader . read_to_end_unbuffered ( name) {
1007
1008
Err ( Error :: UnexpectedEof ( _) ) => Err ( DeError :: UnexpectedEof ) ,
1008
1009
other => Ok ( other?) ,
@@ -1218,7 +1219,7 @@ mod tests {
1218
1219
de. next( ) . unwrap( ) ,
1219
1220
Start ( BytesStart :: borrowed_name( b"target" ) )
1220
1221
) ;
1221
- de. read_to_end ( b"target" ) . unwrap ( ) ;
1222
+ de. read_to_end ( QName ( b"target" ) ) . unwrap ( ) ;
1222
1223
assert_eq ! ( de. read, vec![ ] ) ;
1223
1224
assert_eq ! (
1224
1225
de. write,
@@ -1258,7 +1259,7 @@ mod tests {
1258
1259
de. next( ) . unwrap( ) ,
1259
1260
Start ( BytesStart :: borrowed_name( b"skip" ) )
1260
1261
) ;
1261
- de. read_to_end ( b"skip" ) . unwrap ( ) ;
1262
+ de. read_to_end ( QName ( b"skip" ) ) . unwrap ( ) ;
1262
1263
1263
1264
assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: borrowed( b"root" ) ) ) ;
1264
1265
}
@@ -1319,7 +1320,7 @@ mod tests {
1319
1320
de. next( ) . unwrap( ) ,
1320
1321
Start ( BytesStart :: borrowed( br#"tag a="1""# , 3 ) )
1321
1322
) ;
1322
- assert_eq ! ( de. read_to_end( b"tag" ) . unwrap( ) , ( ) ) ;
1323
+ assert_eq ! ( de. read_to_end( QName ( b"tag" ) ) . unwrap( ) , ( ) ) ;
1323
1324
1324
1325
assert_eq ! (
1325
1326
de. next( ) . unwrap( ) ,
@@ -1335,7 +1336,7 @@ mod tests {
1335
1336
de. next( ) . unwrap( ) ,
1336
1337
Start ( BytesStart :: borrowed( b"self-closed" , 11 ) )
1337
1338
) ;
1338
- assert_eq ! ( de. read_to_end( b"self-closed" ) . unwrap( ) , ( ) ) ;
1339
+ assert_eq ! ( de. read_to_end( QName ( b"self-closed" ) ) . unwrap( ) , ( ) ) ;
1339
1340
1340
1341
assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: borrowed( b"root" ) ) ) ;
1341
1342
assert_eq ! ( de. next( ) . unwrap( ) , Eof ) ;
@@ -1438,7 +1439,7 @@ mod tests {
1438
1439
reader. next( ) . unwrap( ) ,
1439
1440
DeEvent :: Start ( BytesStart :: borrowed( b"item " , 4 ) )
1440
1441
) ;
1441
- reader. read_to_end ( b"item" ) . unwrap ( ) ;
1442
+ reader. read_to_end ( QName ( b"item" ) ) . unwrap ( ) ;
1442
1443
assert_eq ! ( reader. next( ) . unwrap( ) , DeEvent :: Eof ) ;
1443
1444
}
1444
1445
0 commit comments