Merge pull request #506 from koushiro/fix_integer128_serialize

Fix integer128 serialize
This commit is contained in:
David Tolnay 2018-12-30 22:09:59 -05:00 committed by GitHub
commit 59d706077d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 0 deletions

View File

@ -77,6 +77,13 @@ impl serde::Serializer for Serializer {
Ok(Value::Number(value.into()))
}
serde_if_integer128! {
#[cfg(feature = "arbitrary_precision")]
fn serialize_i128(self, value: i128) -> Result<Value, Error> {
Ok(Value::Number(Number::from_string_unchecked(value.to_string())))
}
}
#[inline]
fn serialize_u8(self, value: u8) -> Result<Value, Error> {
self.serialize_u64(value as u64)
@ -97,6 +104,13 @@ impl serde::Serializer for Serializer {
Ok(Value::Number(value.into()))
}
serde_if_integer128! {
#[cfg(feature = "arbitrary_precision")]
fn serialize_u128(self, value: u128) -> Result<Value, Error> {
Ok(Value::Number(Number::from_string_unchecked(value.to_string())))
}
}
#[inline]
fn serialize_f32(self, value: f32) -> Result<Value, Error> {
self.serialize_f64(value as f64)

View File

@ -1909,6 +1909,13 @@ fn test_partialeq_number() {
);
}
#[test]
#[cfg(integer128)]
#[cfg(feature = "arbitrary_precision")]
fn test_partialeq_integer128() {
number_partialeq_ok!(i128::MIN i128::MAX u128::MIN u128::MAX)
}
#[test]
fn test_partialeq_string() {
let v = to_value("42").unwrap();