blob: 9515661bfbbe7aeb9522dea4143814eafcbb866f (
plain)
1
2
3
4
5
6
7
8
9
10
|
use serde::{de, Deserialize, Deserializer};
use serde_json::Value;
pub fn number_from_string<'de, D: Deserializer<'de>>(deserializer: D) -> Result<f64, D::Error> {
Ok(match Value::deserialize(deserializer)? {
Value::String(s) => s.parse().map_err(de::Error::custom)?,
Value::Number(num) => num.as_f64().ok_or(de::Error::custom("Invalid number"))?,
_ => return Err(de::Error::custom("wrong type")),
})
}
|