@@ -325,30 +325,12 @@ where
325
325
}
326
326
}
327
327
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 >
329
329
where
330
330
V : Visitor < ' de > ,
331
331
{
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)
352
334
}
353
335
354
336
impl < ' de , R > Deserializer < ' de , R >
@@ -738,10 +720,9 @@ where
738
720
{
739
721
// Try to go to the next `<tag ...>...</tag>` or `<tag .../>`
740
722
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) ?;
743
724
let value = visitor. visit_map ( map) ?;
744
- self . read_to_end ( QName ( & name) ) ?;
725
+ self . read_to_end ( e . name ( ) ) ?;
745
726
Ok ( value)
746
727
} else {
747
728
Err ( DeError :: ExpectedStart )
@@ -1182,7 +1163,7 @@ mod tests {
1182
1163
// </skip>
1183
1164
// </root>
1184
1165
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 ( ) ;
1186
1167
assert_eq ! ( de. read, vec![ ] ) ;
1187
1168
assert_eq ! (
1188
1169
de. write,
@@ -1219,7 +1200,7 @@ mod tests {
1219
1200
assert_eq ! ( de. write, vec![ ] ) ;
1220
1201
1221
1202
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 ( ) ;
1223
1204
1224
1205
assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: new( "root" ) ) ) ;
1225
1206
assert_eq ! ( de. next( ) . unwrap( ) , Eof ) ;
@@ -1477,7 +1458,7 @@ mod tests {
1477
1458
de. next( ) . unwrap( ) ,
1478
1459
Start ( BytesStart :: from_content( r#"tag a="1""# , 3 ) )
1479
1460
) ;
1480
- assert_eq ! ( de. read_to_end( QName ( b "tag") ) . unwrap( ) , ( ) ) ;
1461
+ assert_eq ! ( de. read_to_end( QName ( "tag" ) ) . unwrap( ) , ( ) ) ;
1481
1462
1482
1463
assert_eq ! (
1483
1464
de. next( ) . unwrap( ) ,
@@ -1487,7 +1468,7 @@ mod tests {
1487
1468
assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: new( "tag" ) ) ) ;
1488
1469
1489
1470
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( ) , ( ) ) ;
1491
1472
1492
1473
assert_eq ! ( de. next( ) . unwrap( ) , End ( BytesEnd :: new( "root" ) ) ) ;
1493
1474
assert_eq ! ( de. next( ) . unwrap( ) , Eof ) ;
@@ -1588,7 +1569,7 @@ mod tests {
1588
1569
reader. next( ) . unwrap( ) ,
1589
1570
DeEvent :: Start ( BytesStart :: from_content( "item " , 4 ) )
1590
1571
) ;
1591
- reader. read_to_end ( QName ( b "item") ) . unwrap ( ) ;
1572
+ reader. read_to_end ( QName ( "item" ) ) . unwrap ( ) ;
1592
1573
assert_eq ! ( reader. next( ) . unwrap( ) , DeEvent :: Eof ) ;
1593
1574
}
1594
1575
0 commit comments