@@ -121,7 +121,7 @@ where
121
121
serde_if_integer128 ! {
122
122
fn serialize_i128( self , value: i128 ) -> Result <( ) > {
123
123
self . formatter
124
- . write_number_str ( & mut self . writer, & value. to_string ( ) )
124
+ . write_i128 ( & mut self . writer, value)
125
125
. map_err( Error :: io)
126
126
}
127
127
}
@@ -165,7 +165,7 @@ where
165
165
serde_if_integer128 ! {
166
166
fn serialize_u128( self , value: u128 ) -> Result <( ) > {
167
167
self . formatter
168
- . write_number_str ( & mut self . writer, & value. to_string ( ) )
168
+ . write_u128 ( & mut self . writer, value)
169
169
. map_err( Error :: io)
170
170
}
171
171
}
@@ -974,7 +974,7 @@ where
974
974
tri!( self
975
975
. ser
976
976
. formatter
977
- . write_number_str ( & mut self . ser. writer, & value. to_string ( ) )
977
+ . write_i128 ( & mut self . ser. writer, value)
978
978
. map_err( Error :: io) ) ;
979
979
tri!( self
980
980
. ser
@@ -1071,7 +1071,7 @@ where
1071
1071
tri!( self
1072
1072
. ser
1073
1073
. formatter
1074
- . write_number_str ( & mut self . ser. writer, & value. to_string ( ) )
1074
+ . write_u128 ( & mut self . ser. writer, value)
1075
1075
. map_err( Error :: io) ) ;
1076
1076
tri!( self
1077
1077
. ser
@@ -1661,6 +1661,17 @@ pub trait Formatter {
1661
1661
writer. write_all ( s. as_bytes ( ) )
1662
1662
}
1663
1663
1664
+ /// Writes an integer value like `-123` to the specified writer.
1665
+ #[ inline]
1666
+ fn write_i128 < W > ( & mut self , writer : & mut W , value : i128 ) -> io:: Result < ( ) >
1667
+ where
1668
+ W : ?Sized + io:: Write ,
1669
+ {
1670
+ let mut buffer = itoa:: Buffer :: new ( ) ;
1671
+ let s = buffer. format ( value) ;
1672
+ writer. write_all ( s. as_bytes ( ) )
1673
+ }
1674
+
1664
1675
/// Writes an integer value like `123` to the specified writer.
1665
1676
#[ inline]
1666
1677
fn write_u8 < W > ( & mut self , writer : & mut W , value : u8 ) -> io:: Result < ( ) >
@@ -1705,6 +1716,17 @@ pub trait Formatter {
1705
1716
writer. write_all ( s. as_bytes ( ) )
1706
1717
}
1707
1718
1719
+ /// Writes an integer value like `123` to the specified writer.
1720
+ #[ inline]
1721
+ fn write_u128 < W > ( & mut self , writer : & mut W , value : u128 ) -> io:: Result < ( ) >
1722
+ where
1723
+ W : ?Sized + io:: Write ,
1724
+ {
1725
+ let mut buffer = itoa:: Buffer :: new ( ) ;
1726
+ let s = buffer. format ( value) ;
1727
+ writer. write_all ( s. as_bytes ( ) )
1728
+ }
1729
+
1708
1730
/// Writes a floating point value like `-31.26e+12` to the specified writer.
1709
1731
#[ inline]
1710
1732
fn write_f32 < W > ( & mut self , writer : & mut W , value : f32 ) -> io:: Result < ( ) >
0 commit comments