Support deserializing from other integer types
This commit is contained in:
parent
22f00d37bf
commit
985e21003f
16
src/value.rs
16
src/value.rs
|
@ -423,6 +423,22 @@ impl<'de> de::Deserialize<'de> for Value {
|
||||||
Ok(Value::Integer(value))
|
Ok(Value::Integer(value))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn visit_u64<E: de::Error>(self, value: u64) -> Result<Value, E> {
|
||||||
|
if value <= i64::max_value() as u64 {
|
||||||
|
Ok(Value::Integer(value as i64))
|
||||||
|
} else {
|
||||||
|
Err(de::Error::custom("u64 value was too large"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn visit_u32<E>(self, value: u32) -> Result<Value, E> {
|
||||||
|
Ok(Value::Integer(value.into()))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn visit_i32<E>(self, value: i32) -> Result<Value, E> {
|
||||||
|
Ok(Value::Integer(value.into()))
|
||||||
|
}
|
||||||
|
|
||||||
fn visit_f64<E>(self, value: f64) -> Result<Value, E> {
|
fn visit_f64<E>(self, value: f64) -> Result<Value, E> {
|
||||||
Ok(Value::Float(value))
|
Ok(Value::Float(value))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue