Merge pull request #1286 from dtolnay/into128

Implement IntoDeserializer for i128 and u128
This commit is contained in:
David Tolnay 2018-05-26 15:36:46 -07:00 committed by GitHub
commit cd0b2d312c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 0 deletions

View File

@ -218,6 +218,11 @@ primitive_deserializer!(f32, "an `f32`.", F32Deserializer, visit_f32);
primitive_deserializer!(f64, "an `f64`.", F64Deserializer, visit_f64);
primitive_deserializer!(char, "a `char`.", CharDeserializer, visit_char);
serde_if_integer128! {
primitive_deserializer!(i128, "an `i128`.", I128Deserializer, visit_i128);
primitive_deserializer!(u128, "a `u128`.", U128Deserializer, visit_u128);
}
/// A deserializer holding a `u32`.
#[derive(Clone, Debug)]
pub struct U32Deserializer<E> {

View File

@ -25,3 +25,21 @@ fn test_u32_to_enum() {
let e: E = E::deserialize(deserializer).unwrap();
assert_eq!(E::B, e);
}
#[test]
fn test_integer128() {
let de_u128 = IntoDeserializer::<value::Error>::into_deserializer(1u128);
let de_i128 = IntoDeserializer::<value::Error>::into_deserializer(1i128);
// u128 to u128
assert_eq!(1u128, u128::deserialize(de_u128.clone()).unwrap());
// u128 to i128
assert_eq!(1i128, i128::deserialize(de_u128.clone()).unwrap());
// i128 to u128
assert_eq!(1u128, u128::deserialize(de_i128.clone()).unwrap());
// i128 to i128
assert_eq!(1i128, i128::deserialize(de_i128.clone()).unwrap());
}