@@ -358,25 +358,7 @@ impl<'a, 'de> de::Deserializer<'de> for &'a mut Deserializer<'de> {
358
358
where
359
359
V : Visitor < ' de > ,
360
360
{
361
- match self . parse_whitespace ( ) . ok_or ( Error :: EofWhileParsingValue ) ? {
362
- b'"' => self . eat_char ( ) ,
363
- _ => return Err ( Error :: InvalidType ) ,
364
- } ;
365
-
366
- let result = match self . peek ( ) {
367
- // after rust merged or-patterns feature, these two clause can be merged.
368
- // error[E0658]: or-patterns syntax is experimental
369
- Some ( b'0' ..=b'9' ) => deserialize_signed ! ( self , visitor, i128 , visit_i128) ,
370
- Some ( b'-' ) => deserialize_signed ! ( self , visitor, i128 , visit_i128) ,
371
- _ => return Err ( Error :: InvalidType ) ,
372
- } ;
373
- match self . peek ( ) {
374
- Some ( b'"' ) => {
375
- self . eat_char ( ) ;
376
- result
377
- }
378
- _ => Err ( Error :: InvalidType ) ,
379
- }
361
+ deserialize_signed ! ( self , visitor, i128 , visit_i128)
380
362
}
381
363
382
364
fn deserialize_u8 < V > ( self , visitor : V ) -> Result < V :: Value >
@@ -411,25 +393,7 @@ impl<'a, 'de> de::Deserializer<'de> for &'a mut Deserializer<'de> {
411
393
where
412
394
V : Visitor < ' de > ,
413
395
{
414
- match self . parse_whitespace ( ) . ok_or ( Error :: EofWhileParsingValue ) ? {
415
- b'"' => {
416
- self . eat_char ( ) ;
417
- }
418
- _ => return Err ( Error :: InvalidType ) ,
419
- } ;
420
-
421
- let result = match self . peek ( ) {
422
- Some ( b'-' ) => return Err ( Error :: InvalidNumber ) ,
423
- Some ( b'0' ..=b'9' ) => deserialize_unsigned ! ( self , visitor, u128 , visit_u128) ,
424
- _ => return Err ( Error :: InvalidType ) ,
425
- } ;
426
- match self . peek ( ) {
427
- Some ( b'"' ) => {
428
- self . eat_char ( ) ;
429
- result
430
- }
431
- _ => Err ( Error :: InvalidType ) ,
432
- }
396
+ deserialize_unsigned ! ( self , visitor, u128 , visit_u128)
433
397
}
434
398
435
399
fn deserialize_f32 < V > ( self , _visitor : V ) -> Result < V :: Value >
@@ -755,43 +719,49 @@ mod tests {
755
719
756
720
#[ test]
757
721
fn integer128 ( ) {
758
- assert_eq ! ( from_str:: <i128 >( r#"0"# ) , Err ( crate :: de:: Error :: InvalidType ) ) ;
759
- assert_eq ! ( from_str:: <i128 >( r#""0""# ) , Ok ( 0 ) ) ;
760
- assert_eq ! ( from_str:: <i128 >( r#""1""# ) , Ok ( 1 ) ) ;
761
- assert_eq ! ( from_str:: <i128 >( r#""-1""# ) , Ok ( -1 ) ) ;
722
+ assert_eq ! (
723
+ from_str:: <i128 >( r#""0""# ) ,
724
+ Err ( crate :: de:: Error :: InvalidType )
725
+ ) ;
726
+ assert_eq ! ( from_str:: <i128 >( r#"0"# ) , Ok ( 0 ) ) ;
727
+ assert_eq ! ( from_str:: <i128 >( r#"1"# ) , Ok ( 1 ) ) ;
728
+ assert_eq ! ( from_str:: <i128 >( r#"-1"# ) , Ok ( -1 ) ) ;
762
729
// max i128
763
730
assert_eq ! (
764
- from_str:: <i128 >( r#"" 170141183460469231731687303715884105727" "# ) ,
731
+ from_str:: <i128 >( r#"170141183460469231731687303715884105727"# ) ,
765
732
Ok ( 170141183460469231731687303715884105727 )
766
733
) ;
767
734
assert_eq ! (
768
- from_str:: <i128 >( r#"" 170141183460469231731687303715884105728" "# ) ,
735
+ from_str:: <i128 >( r#"170141183460469231731687303715884105728"# ) ,
769
736
Err ( crate :: de:: Error :: InvalidNumber )
770
737
) ;
771
738
// min i128
772
739
assert_eq ! (
773
- from_str:: <i128 >( r#"" -170141183460469231731687303715884105728" "# ) ,
740
+ from_str:: <i128 >( r#"-170141183460469231731687303715884105728"# ) ,
774
741
Ok ( -170141183460469231731687303715884105728 )
775
742
) ;
776
743
assert_eq ! (
777
- from_str:: <i128 >( r#"" -170141183460469231731687303715884105729" "# ) ,
744
+ from_str:: <i128 >( r#"-170141183460469231731687303715884105729"# ) ,
778
745
Err ( crate :: de:: Error :: InvalidNumber )
779
746
) ;
780
747
781
- assert_eq ! ( from_str:: <u128 >( r#"0"# ) , Err ( crate :: de:: Error :: InvalidType ) ) ;
782
- assert_eq ! ( from_str:: <u128 >( r#""0""# ) , Ok ( 0 ) ) ;
783
- assert_eq ! ( from_str:: <u128 >( r#""1""# ) , Ok ( 1 ) ) ;
784
748
assert_eq ! (
785
- from_str:: <u128 >( r#""-1""# ) ,
749
+ from_str:: <u128 >( r#""0""# ) ,
750
+ Err ( crate :: de:: Error :: InvalidType )
751
+ ) ;
752
+ assert_eq ! ( from_str:: <u128 >( r#"0"# ) , Ok ( 0 ) ) ;
753
+ assert_eq ! ( from_str:: <u128 >( r#"1"# ) , Ok ( 1 ) ) ;
754
+ assert_eq ! (
755
+ from_str:: <u128 >( r#"-1"# ) ,
786
756
Err ( crate :: de:: Error :: InvalidNumber )
787
757
) ;
788
758
// max u128
789
759
assert_eq ! (
790
- from_str:: <u128 >( r#"" 340282366920938463463374607431768211455" "# ) ,
760
+ from_str:: <u128 >( r#"340282366920938463463374607431768211455"# ) ,
791
761
Ok ( 340282366920938463463374607431768211455 )
792
762
) ;
793
763
assert_eq ! (
794
- from_str:: <u128 >( r#"" 340282366920938463463374607431768211456" "# ) ,
764
+ from_str:: <u128 >( r#"340282366920938463463374607431768211456"# ) ,
795
765
Err ( crate :: de:: Error :: InvalidNumber )
796
766
)
797
767
}
0 commit comments