@@ -220,30 +220,12 @@ where
220220 }
221221}
222222
223- fn deserialize_bool < ' de , V > ( value : & [ u8 ] , decoder : Decoder , visitor : V ) -> Result < V :: Value , DeError >
223+ fn deserialize_bool < ' de , V > ( value : & str , visitor : V ) -> Result < V :: Value , DeError >
224224where
225225 V : Visitor < ' de > ,
226226{
227- #[ cfg( feature = "encoding" ) ]
228- {
229- let value = decoder. decode ( value) ?;
230- // No need to unescape because valid boolean representations cannot be escaped
231- str2bool ( value. as_ref ( ) , visitor)
232- }
233-
234- #[ cfg( not( feature = "encoding" ) ) ]
235- {
236- // No need to unescape because valid boolean representations cannot be escaped
237- match value {
238- b"true" | b"1" | b"True" | b"TRUE" | b"t" | b"Yes" | b"YES" | b"yes" | b"y" => {
239- visitor. visit_bool ( true )
240- }
241- b"false" | b"0" | b"False" | b"FALSE" | b"f" | b"No" | b"NO" | b"no" | b"n" => {
242- visitor. visit_bool ( false )
243- }
244- e => Err ( DeError :: InvalidBoolean ( decoder. decode ( e) ?. into ( ) ) ) ,
245- }
246- }
227+ // No need to unescape because valid boolean representations cannot be escaped
228+ str2bool ( value. as_ref ( ) , visitor)
247229}
248230
249231impl < ' de , R > Deserializer < ' de , R >
@@ -633,10 +615,9 @@ where
633615 {
634616 // Try to go to the next `<tag ...>...</tag>` or `<tag .../>`
635617 if let Some ( e) = self . next_start ( ) ? {
636- let name = e. name ( ) . as_ref ( ) . to_vec ( ) ;
637- let map = map:: MapAccess :: new ( self , e, fields) ?;
618+ let map = map:: MapAccess :: new ( self , e. clone ( ) , fields) ?;
638619 let value = visitor. visit_map ( map) ?;
639- self . read_to_end ( QName ( & name) ) ?;
620+ self . read_to_end ( e . name ( ) ) ?;
640621 Ok ( value)
641622 } else {
642623 Err ( DeError :: ExpectedStart )
@@ -1079,7 +1060,7 @@ mod tests {
10791060 // </skip>
10801061 // </root>
10811062 assert_eq ! ( de. next( ) . unwrap( ) , Start ( BytesStart :: new( "target" ) ) ) ;
1082- de. read_to_end ( QName ( b "target") ) . unwrap ( ) ;
1063+ de. read_to_end ( QName ( "target" ) ) . unwrap ( ) ;
10831064 assert_eq ! ( de. read, vec![ ] ) ;
10841065 assert_eq ! (
10851066 de. write,
@@ -1116,7 +1097,7 @@ mod tests {
11161097 assert_eq ! ( de. write, vec![ ] ) ;
11171098
11181099 assert_eq ! ( de. next( ) . unwrap( ) , Start ( BytesStart :: new( "skip" ) ) ) ;
1119- de. read_to_end ( QName ( b "skip") ) . unwrap ( ) ;
1100+ de. read_to_end ( QName ( "skip" ) ) . unwrap ( ) ;
11201101
11211102 assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: new( "root" ) ) ) ;
11221103 assert_eq ! ( de. next( ) . unwrap( ) , Eof ) ;
@@ -1374,7 +1355,7 @@ mod tests {
13741355 de. next( ) . unwrap( ) ,
13751356 Start ( BytesStart :: from_content( r#"tag a="1""# , 3 ) )
13761357 ) ;
1377- assert_eq ! ( de. read_to_end( QName ( b "tag") ) . unwrap( ) , ( ) ) ;
1358+ assert_eq ! ( de. read_to_end( QName ( "tag" ) ) . unwrap( ) , ( ) ) ;
13781359
13791360 assert_eq ! (
13801361 de. next( ) . unwrap( ) ,
@@ -1384,7 +1365,7 @@ mod tests {
13841365 assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: new( "tag" ) ) ) ;
13851366
13861367 assert_eq ! ( de. next( ) . unwrap( ) , Start ( BytesStart :: new( "self-closed" ) ) ) ;
1387- assert_eq ! ( de. read_to_end( QName ( b "self-closed") ) . unwrap( ) , ( ) ) ;
1368+ assert_eq ! ( de. read_to_end( QName ( "self-closed" ) ) . unwrap( ) , ( ) ) ;
13881369
13891370 assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: new( "root" ) ) ) ;
13901371 assert_eq ! ( de. next( ) . unwrap( ) , Eof ) ;
@@ -1485,7 +1466,7 @@ mod tests {
14851466 reader. next( ) . unwrap( ) ,
14861467 DeEvent :: Start ( BytesStart :: from_content( "item " , 4 ) )
14871468 ) ;
1488- reader. read_to_end ( QName ( b "item") ) . unwrap ( ) ;
1469+ reader. read_to_end ( QName ( "item" ) ) . unwrap ( ) ;
14891470 assert_eq ! ( reader. next( ) . unwrap( ) , DeEvent :: Eof ) ;
14901471 }
14911472
0 commit comments