diff options
author | Nadrieril | 2020-10-28 20:38:29 +0000 |
---|---|---|
committer | GitHub | 2020-10-28 20:38:29 +0000 |
commit | 70727acbda68e104f60ae1dbbe95adbcec08a628 (patch) | |
tree | ac3f0782fb90c8f6b03b3d29d1032d06d637e4ee /serde_dhall/src/deserialize.rs | |
parent | 2b4ba42b7f0a44893f17548f069cec1e60819aa4 (diff) | |
parent | 9e3f68fc54babf24133cf66ae6be7d069ba2c271 (diff) |
Merge pull request #188 from Nadrieril/change-nums
Use u64/i64 instead of usize/isize for the main number types
Diffstat (limited to 'serde_dhall/src/deserialize.rs')
-rw-r--r-- | serde_dhall/src/deserialize.rs | 32 |
1 files changed, 4 insertions, 28 deletions
diff --git a/serde_dhall/src/deserialize.rs b/serde_dhall/src/deserialize.rs index 1206033..12b4703 100644 --- a/serde_dhall/src/deserialize.rs +++ b/serde_dhall/src/deserialize.rs @@ -1,6 +1,5 @@ use std::borrow::Cow; use std::collections::BTreeMap; -use std::convert::TryInto as _; use std::fmt; use serde::de::value::{ @@ -124,31 +123,14 @@ impl<'de: 'a, 'a> serde::Deserializer<'de> for Deserializer<'a> { where V: serde::de::Visitor<'de>, { - use std::convert::TryInto; use NumKind::*; use SimpleValue::*; let val = |x| Deserializer(Cow::Borrowed(x)); match self.0.as_ref() { Num(Bool(x)) => visitor.visit_bool(*x), - Num(Natural(x)) => { - if let Ok(x64) = (*x).try_into() { - visitor.visit_u64(x64) - } else if let Ok(x32) = (*x).try_into() { - visitor.visit_u32(x32) - } else { - unimplemented!() - } - } - Num(Integer(x)) => { - if let Ok(x64) = (*x).try_into() { - visitor.visit_i64(x64) - } else if let Ok(x32) = (*x).try_into() { - visitor.visit_i32(x32) - } else { - unimplemented!() - } - } + Num(Natural(x)) => visitor.visit_u64(*x), + Num(Integer(x)) => visitor.visit_i64(*x), Num(Double(x)) => visitor.visit_f64((*x).into()), Text(x) => visitor.visit_str(x), List(xs) => { @@ -210,17 +192,11 @@ impl<'de> serde::de::Visitor<'de> for SimpleValueVisitor { } fn visit_i64<E>(self, value: i64) -> Result<SimpleValue, E> { - // TODO: use `i64` instead of `isize` in `NumKind`. - Ok(SimpleValue::Num(NumKind::Integer( - value.try_into().unwrap(), - ))) + Ok(SimpleValue::Num(NumKind::Integer(value))) } fn visit_u64<E>(self, value: u64) -> Result<SimpleValue, E> { - // TODO: use `u64` instead of `usize` in `NumKind`. - Ok(SimpleValue::Num(NumKind::Natural( - value.try_into().unwrap(), - ))) + Ok(SimpleValue::Num(NumKind::Natural(value))) } fn visit_f64<E>(self, value: f64) -> Result<SimpleValue, E> { |