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 { macro_rules! impl_into_value {
($variant:ident : $T:ty) => (impl_into_value!($variant: $T,);); ($variant:ident : $T:ty) => {
($variant:ident : $T:ty, $($extra:tt)*) => (
impl From<$T> for Value { impl From<$T> for Value {
#[inline] #[inline]
fn from(val: $T) -> Value { fn from(val: $T) -> Value {
Value::$variant(val $($extra)*) Value::$variant(val.into())
} }
} }
) }
} }
impl_into_value!(String: String); impl_into_value!(String: String);
impl_into_value!(Integer: i64); impl_into_value!(Integer: i64);
impl_into_value!(Integer: isize, as i64); impl_into_value!(Integer: i32);
impl_into_value!(Integer: i32, as i64); impl_into_value!(Integer: i8);
impl_into_value!(Integer: i8, as i64); impl_into_value!(Integer: u8);
impl_into_value!(Integer: u8, as i64); impl_into_value!(Integer: u32);
impl_into_value!(Integer: u32, as i64);
impl_into_value!(Float: f64); 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!(Boolean: bool);
impl_into_value!(Datetime: Datetime); impl_into_value!(Datetime: Datetime);