@@ -325,30 +325,12 @@ where
325325 }
326326}
327327
328- fn deserialize_bool < ' de , V > ( value : & [ u8 ] , decoder : Decoder , visitor : V ) -> Result < V :: Value , DeError >
328+ fn deserialize_bool < ' de , V > ( value : & str , visitor : V ) -> Result < V :: Value , DeError >
329329where
330330 V : Visitor < ' de > ,
331331{
332- #[ cfg( feature = "encoding" ) ]
333- {
334- let value = decoder. decode ( value) ?;
335- // No need to unescape because valid boolean representations cannot be escaped
336- str2bool ( value. as_ref ( ) , visitor)
337- }
338-
339- #[ cfg( not( feature = "encoding" ) ) ]
340- {
341- // No need to unescape because valid boolean representations cannot be escaped
342- match value {
343- b"true" | b"1" | b"True" | b"TRUE" | b"t" | b"Yes" | b"YES" | b"yes" | b"y" => {
344- visitor. visit_bool ( true )
345- }
346- b"false" | b"0" | b"False" | b"FALSE" | b"f" | b"No" | b"NO" | b"no" | b"n" => {
347- visitor. visit_bool ( false )
348- }
349- e => Err ( DeError :: InvalidBoolean ( decoder. decode ( e) ?. into ( ) ) ) ,
350- }
351- }
332+ // No need to unescape because valid boolean representations cannot be escaped
333+ str2bool ( value. as_ref ( ) , visitor)
352334}
353335
354336impl < ' de , R > Deserializer < ' de , R >
@@ -738,10 +720,9 @@ where
738720 {
739721 // Try to go to the next `<tag ...>...</tag>` or `<tag .../>`
740722 if let Some ( e) = self . next_start ( ) ? {
741- let name = e. name ( ) . as_ref ( ) . to_vec ( ) ;
742- let map = map:: MapAccess :: new ( self , e, fields) ?;
723+ let map = map:: MapAccess :: new ( self , e. clone ( ) , fields) ?;
743724 let value = visitor. visit_map ( map) ?;
744- self . read_to_end ( QName ( & name) ) ?;
725+ self . read_to_end ( e . name ( ) ) ?;
745726 Ok ( value)
746727 } else {
747728 Err ( DeError :: ExpectedStart )
@@ -1182,7 +1163,7 @@ mod tests {
11821163 // </skip>
11831164 // </root>
11841165 assert_eq ! ( de. next( ) . unwrap( ) , Start ( BytesStart :: new( "target" ) ) ) ;
1185- de. read_to_end ( QName ( b "target") ) . unwrap ( ) ;
1166+ de. read_to_end ( QName ( "target" ) ) . unwrap ( ) ;
11861167 assert_eq ! ( de. read, vec![ ] ) ;
11871168 assert_eq ! (
11881169 de. write,
@@ -1219,7 +1200,7 @@ mod tests {
12191200 assert_eq ! ( de. write, vec![ ] ) ;
12201201
12211202 assert_eq ! ( de. next( ) . unwrap( ) , Start ( BytesStart :: new( "skip" ) ) ) ;
1222- de. read_to_end ( QName ( b "skip") ) . unwrap ( ) ;
1203+ de. read_to_end ( QName ( "skip" ) ) . unwrap ( ) ;
12231204
12241205 assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: new( "root" ) ) ) ;
12251206 assert_eq ! ( de. next( ) . unwrap( ) , Eof ) ;
@@ -1477,7 +1458,7 @@ mod tests {
14771458 de. next( ) . unwrap( ) ,
14781459 Start ( BytesStart :: from_content( r#"tag a="1""# , 3 ) )
14791460 ) ;
1480- assert_eq ! ( de. read_to_end( QName ( b "tag") ) . unwrap( ) , ( ) ) ;
1461+ assert_eq ! ( de. read_to_end( QName ( "tag" ) ) . unwrap( ) , ( ) ) ;
14811462
14821463 assert_eq ! (
14831464 de. next( ) . unwrap( ) ,
@@ -1487,7 +1468,7 @@ mod tests {
14871468 assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: new( "tag" ) ) ) ;
14881469
14891470 assert_eq ! ( de. next( ) . unwrap( ) , Start ( BytesStart :: new( "self-closed" ) ) ) ;
1490- assert_eq ! ( de. read_to_end( QName ( b "self-closed") ) . unwrap( ) , ( ) ) ;
1471+ assert_eq ! ( de. read_to_end( QName ( "self-closed" ) ) . unwrap( ) , ( ) ) ;
14911472
14921473 assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: new( "root" ) ) ) ;
14931474 assert_eq ! ( de. next( ) . unwrap( ) , Eof ) ;
@@ -1588,7 +1569,7 @@ mod tests {
15881569 reader. next( ) . unwrap( ) ,
15891570 DeEvent :: Start ( BytesStart :: from_content( "item " , 4 ) )
15901571 ) ;
1591- reader. read_to_end ( QName ( b "item") ) . unwrap ( ) ;
1572+ reader. read_to_end ( QName ( "item" ) ) . unwrap ( ) ;
15921573 assert_eq ! ( reader. next( ) . unwrap( ) , DeEvent :: Eof ) ;
15931574 }
15941575
0 commit comments