Skip to content

Commit 59d7060

Browse files
authored
Merge pull request #506 from koushiro/fix_integer128_serialize
Fix integer128 serialize
2 parents 32f1568 + f3c641c commit 59d7060

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

src/value/ser.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,13 @@ impl serde::Serializer for Serializer {
7777
Ok(Value::Number(value.into()))
7878
}
7979

80+
serde_if_integer128! {
81+
#[cfg(feature = "arbitrary_precision")]
82+
fn serialize_i128(self, value: i128) -> Result<Value, Error> {
83+
Ok(Value::Number(Number::from_string_unchecked(value.to_string())))
84+
}
85+
}
86+
8087
#[inline]
8188
fn serialize_u8(self, value: u8) -> Result<Value, Error> {
8289
self.serialize_u64(value as u64)
@@ -97,6 +104,13 @@ impl serde::Serializer for Serializer {
97104
Ok(Value::Number(value.into()))
98105
}
99106

107+
serde_if_integer128! {
108+
#[cfg(feature = "arbitrary_precision")]
109+
fn serialize_u128(self, value: u128) -> Result<Value, Error> {
110+
Ok(Value::Number(Number::from_string_unchecked(value.to_string())))
111+
}
112+
}
113+
100114
#[inline]
101115
fn serialize_f32(self, value: f32) -> Result<Value, Error> {
102116
self.serialize_f64(value as f64)

tests/test.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1909,6 +1909,13 @@ fn test_partialeq_number() {
19091909
);
19101910
}
19111911

1912+
#[test]
1913+
#[cfg(integer128)]
1914+
#[cfg(feature = "arbitrary_precision")]
1915+
fn test_partialeq_integer128() {
1916+
number_partialeq_ok!(i128::MIN i128::MAX u128::MIN u128::MAX)
1917+
}
1918+
19121919
#[test]
19131920
fn test_partialeq_string() {
19141921
let v = to_value("42").unwrap();

0 commit comments

Comments
 (0)