@@ -14,7 +14,7 @@ use core::marker::PhantomData;
1414use core:: result;
1515use core:: str:: FromStr ;
1616use serde:: de:: { self , Expected , Unexpected } ;
17- use serde:: { forward_to_deserialize_any, serde_if_integer128 } ;
17+ use serde:: forward_to_deserialize_any;
1818
1919#[ cfg( feature = "arbitrary_precision" ) ]
2020use crate :: number:: NumberDeserializer ;
@@ -335,31 +335,25 @@ impl<'de, R: Read<'de>> Deserializer<R> {
335335 }
336336 }
337337
338- serde_if_integer128 ! {
339- fn scan_integer128( & mut self , buf: & mut String ) -> Result <( ) > {
340- match tri!( self . next_char_or_null( ) ) {
341- b'0' => {
342- buf. push( '0' ) ;
343- // There can be only one leading '0'.
344- match tri!( self . peek_or_null( ) ) {
345- b'0' ..=b'9' => {
346- Err ( self . peek_error( ErrorCode :: InvalidNumber ) )
347- }
348- _ => Ok ( ( ) ) ,
349- }
338+ fn scan_integer128 ( & mut self , buf : & mut String ) -> Result < ( ) > {
339+ match tri ! ( self . next_char_or_null( ) ) {
340+ b'0' => {
341+ buf. push ( '0' ) ;
342+ // There can be only one leading '0'.
343+ match tri ! ( self . peek_or_null( ) ) {
344+ b'0' ..=b'9' => Err ( self . peek_error ( ErrorCode :: InvalidNumber ) ) ,
345+ _ => Ok ( ( ) ) ,
350346 }
351- c @ b'1' ..=b'9' => {
347+ }
348+ c @ b'1' ..=b'9' => {
349+ buf. push ( c as char ) ;
350+ while let c @ b'0' ..=b'9' = tri ! ( self . peek_or_null( ) ) {
351+ self . eat_char ( ) ;
352352 buf. push ( c as char ) ;
353- while let c @ b'0' ..=b'9' = tri!( self . peek_or_null( ) ) {
354- self . eat_char( ) ;
355- buf. push( c as char ) ;
356- }
357- Ok ( ( ) )
358- }
359- _ => {
360- Err ( self . error( ErrorCode :: InvalidNumber ) )
361353 }
354+ Ok ( ( ) )
362355 }
356+ _ => Err ( self . error ( ErrorCode :: InvalidNumber ) ) ,
363357 }
364358 }
365359
@@ -1437,67 +1431,65 @@ impl<'de, 'a, R: Read<'de>> de::Deserializer<'de> for &'a mut Deserializer<R> {
14371431 val
14381432 }
14391433
1440- serde_if_integer128 ! {
1441- fn deserialize_i128<V >( self , visitor: V ) -> Result <V :: Value >
1442- where
1443- V : de:: Visitor <' de>,
1444- {
1445- let mut buf = String :: new( ) ;
1446-
1447- match tri!( self . parse_whitespace( ) ) {
1448- Some ( b'-' ) => {
1449- self . eat_char( ) ;
1450- buf. push( '-' ) ;
1451- }
1452- Some ( _) => { }
1453- None => {
1454- return Err ( self . peek_error( ErrorCode :: EofWhileParsingValue ) ) ;
1455- }
1456- } ;
1434+ fn deserialize_i128 < V > ( self , visitor : V ) -> Result < V :: Value >
1435+ where
1436+ V : de:: Visitor < ' de > ,
1437+ {
1438+ let mut buf = String :: new ( ) ;
14571439
1458- tri!( self . scan_integer128( & mut buf) ) ;
1440+ match tri ! ( self . parse_whitespace( ) ) {
1441+ Some ( b'-' ) => {
1442+ self . eat_char ( ) ;
1443+ buf. push ( '-' ) ;
1444+ }
1445+ Some ( _) => { }
1446+ None => {
1447+ return Err ( self . peek_error ( ErrorCode :: EofWhileParsingValue ) ) ;
1448+ }
1449+ } ;
14591450
1460- let value = match buf. parse( ) {
1461- Ok ( int) => visitor. visit_i128( int) ,
1462- Err ( _) => {
1463- return Err ( self . error( ErrorCode :: NumberOutOfRange ) ) ;
1464- }
1465- } ;
1451+ tri ! ( self . scan_integer128( & mut buf) ) ;
14661452
1467- match value {
1468- Ok ( value) => Ok ( value) ,
1469- Err ( err) => Err ( self . fix_position( err) ) ,
1453+ let value = match buf. parse ( ) {
1454+ Ok ( int) => visitor. visit_i128 ( int) ,
1455+ Err ( _) => {
1456+ return Err ( self . error ( ErrorCode :: NumberOutOfRange ) ) ;
14701457 }
1458+ } ;
1459+
1460+ match value {
1461+ Ok ( value) => Ok ( value) ,
1462+ Err ( err) => Err ( self . fix_position ( err) ) ,
14711463 }
1464+ }
14721465
1473- fn deserialize_u128<V >( self , visitor: V ) -> Result <V :: Value >
1474- where
1475- V : de:: Visitor <' de>,
1476- {
1477- match tri!( self . parse_whitespace( ) ) {
1478- Some ( b'-' ) => {
1479- return Err ( self . peek_error( ErrorCode :: NumberOutOfRange ) ) ;
1480- }
1481- Some ( _) => { }
1482- None => {
1483- return Err ( self . peek_error( ErrorCode :: EofWhileParsingValue ) ) ;
1484- }
1466+ fn deserialize_u128 < V > ( self , visitor : V ) -> Result < V :: Value >
1467+ where
1468+ V : de:: Visitor < ' de > ,
1469+ {
1470+ match tri ! ( self . parse_whitespace( ) ) {
1471+ Some ( b'-' ) => {
1472+ return Err ( self . peek_error ( ErrorCode :: NumberOutOfRange ) ) ;
14851473 }
1474+ Some ( _) => { }
1475+ None => {
1476+ return Err ( self . peek_error ( ErrorCode :: EofWhileParsingValue ) ) ;
1477+ }
1478+ }
14861479
1487- let mut buf = String :: new( ) ;
1488- tri!( self . scan_integer128( & mut buf) ) ;
1489-
1490- let value = match buf. parse( ) {
1491- Ok ( int) => visitor. visit_u128( int) ,
1492- Err ( _) => {
1493- return Err ( self . error( ErrorCode :: NumberOutOfRange ) ) ;
1494- }
1495- } ;
1480+ let mut buf = String :: new ( ) ;
1481+ tri ! ( self . scan_integer128( & mut buf) ) ;
14961482
1497- match value {
1498- Ok ( value) => Ok ( value) ,
1499- Err ( err) => Err ( self . fix_position( err) ) ,
1483+ let value = match buf. parse ( ) {
1484+ Ok ( int) => visitor. visit_u128 ( int) ,
1485+ Err ( _) => {
1486+ return Err ( self . error ( ErrorCode :: NumberOutOfRange ) ) ;
15001487 }
1488+ } ;
1489+
1490+ match value {
1491+ Ok ( value) => Ok ( value) ,
1492+ Err ( err) => Err ( self . fix_position ( err) ) ,
15011493 }
15021494 }
15031495
@@ -2164,15 +2156,12 @@ where
21642156 deserialize_integer_key ! ( deserialize_i16 => visit_i16) ;
21652157 deserialize_integer_key ! ( deserialize_i32 => visit_i32) ;
21662158 deserialize_integer_key ! ( deserialize_i64 => visit_i64) ;
2159+ deserialize_integer_key ! ( deserialize_i128 => visit_i128) ;
21672160 deserialize_integer_key ! ( deserialize_u8 => visit_u8) ;
21682161 deserialize_integer_key ! ( deserialize_u16 => visit_u16) ;
21692162 deserialize_integer_key ! ( deserialize_u32 => visit_u32) ;
21702163 deserialize_integer_key ! ( deserialize_u64 => visit_u64) ;
2171-
2172- serde_if_integer128 ! {
2173- deserialize_integer_key!( deserialize_i128 => visit_i128) ;
2174- deserialize_integer_key!( deserialize_u128 => visit_u128) ;
2175- }
2164+ deserialize_integer_key ! ( deserialize_u128 => visit_u128) ;
21762165
21772166 #[ inline]
21782167 fn deserialize_option < V > ( self , visitor : V ) -> Result < V :: Value >
0 commit comments