Use 'into()' to convert numerical values safely

This commit is contained in:
Sergio Benitez 2017-06-19 17:49:55 -07:00
parent f936fcfb13
commit 7f9e594e47

View file

@ -254,26 +254,24 @@ impl<S: Into<String> + Hash + Eq, V: Into<Value>> From<HashMap<S, V>> for Value
}
macro_rules! impl_into_value {
($variant:ident : $T:ty) => (impl_into_value!($variant: $T,););
($variant:ident : $T:ty, $($extra:tt)*) => (
($variant:ident : $T:ty) => {
impl From<$T> for Value {
#[inline]
fn from(val: $T) -> Value {
Value::$variant(val $($extra)*)
Value::$variant(val.into())
}
}
)
}
}
impl_into_value!(String: String);
impl_into_value!(Integer: i64);
impl_into_value!(Integer: isize, as i64);
impl_into_value!(Integer: i32, as i64);
impl_into_value!(Integer: i8, as i64);
impl_into_value!(Integer: u8, as i64);
impl_into_value!(Integer: u32, as i64);
impl_into_value!(Integer: i32);
impl_into_value!(Integer: i8);
impl_into_value!(Integer: u8);
impl_into_value!(Integer: u32);
impl_into_value!(Float: f64);
impl_into_value!(Float: f32, as f64);
impl_into_value!(Float: f32);
impl_into_value!(Boolean: bool);
impl_into_value!(Datetime: Datetime);