Skip to content

Commit 486598b

Browse files
committed
Merge pull request 940 from Lucretiel/int128
2 parents 4217e8e + 84d6d95 commit 486598b

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

src/ser.rs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ where
121121
serde_if_integer128! {
122122
fn serialize_i128(self, value: i128) -> Result<()> {
123123
self.formatter
124-
.write_number_str(&mut self.writer, &value.to_string())
124+
.write_i128(&mut self.writer, value)
125125
.map_err(Error::io)
126126
}
127127
}
@@ -165,7 +165,7 @@ where
165165
serde_if_integer128! {
166166
fn serialize_u128(self, value: u128) -> Result<()> {
167167
self.formatter
168-
.write_number_str(&mut self.writer, &value.to_string())
168+
.write_u128(&mut self.writer, value)
169169
.map_err(Error::io)
170170
}
171171
}
@@ -974,7 +974,7 @@ where
974974
tri!(self
975975
.ser
976976
.formatter
977-
.write_number_str(&mut self.ser.writer, &value.to_string())
977+
.write_i128(&mut self.ser.writer, value)
978978
.map_err(Error::io));
979979
tri!(self
980980
.ser
@@ -1071,7 +1071,7 @@ where
10711071
tri!(self
10721072
.ser
10731073
.formatter
1074-
.write_number_str(&mut self.ser.writer, &value.to_string())
1074+
.write_u128(&mut self.ser.writer, value)
10751075
.map_err(Error::io));
10761076
tri!(self
10771077
.ser
@@ -1661,6 +1661,17 @@ pub trait Formatter {
16611661
writer.write_all(s.as_bytes())
16621662
}
16631663

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+
16641675
/// Writes an integer value like `123` to the specified writer.
16651676
#[inline]
16661677
fn write_u8<W>(&mut self, writer: &mut W, value: u8) -> io::Result<()>
@@ -1705,6 +1716,17 @@ pub trait Formatter {
17051716
writer.write_all(s.as_bytes())
17061717
}
17071718

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+
17081730
/// Writes a floating point value like `-31.26e+12` to the specified writer.
17091731
#[inline]
17101732
fn write_f32<W>(&mut self, writer: &mut W, value: f32) -> io::Result<()>

0 commit comments

Comments
 (0)