teo_teon/convert/into/
f64.rs

1use teo_result::Error;
2use crate::value::Value;
3
4impl TryFrom<&Value> for f64 {
5
6    type Error = Error;
7
8    fn try_from(value: &Value) -> Result<Self, Self::Error> {
9        match value {
10            Value::Float(b) => Ok(*b),
11            _ => Err(Error::new(format!("Cannot convert {} into f64", value.type_hint()))),
12        }
13    }
14}
15
16impl TryFrom<Value> for f64 {
17
18    type Error = Error;
19
20    fn try_from(value: Value) -> Result<Self, Self::Error> {
21        match value {
22            Value::Float(b) => Ok(b),
23            _ => Err(Error::new(format!("Cannot convert {} into f64", value.type_hint()))),
24        }
25    }
26}
27
28impl TryFrom<Value> for Option<f64> {
29
30    type Error = Error;
31
32    fn try_from(value: Value) -> Result<Self, Self::Error> {
33        match value {
34            Value::Null => Ok(None),
35            Value::Float(f) => Ok(Some(f)),
36            _ => Err(Error::new(format!("Cannot convert {} into Option<f64>", value.type_hint()))),
37        }
38    }
39}
40
41impl TryFrom<&Value> for Option<f64> {
42
43    type Error = Error;
44
45    fn try_from(value: &Value) -> Result<Self, Self::Error> {
46        match value {
47            Value::Null => Ok(None),
48            Value::Float(f) => Ok(Some(*f)),
49            _ => Err(Error::new(format!("Cannot convert {} into Option<f64>", value.type_hint()))),
50        }
51    }
52}
53
54impl<'a> TryFrom<&'a Value> for &'a f64 {
55
56    type Error = Error;
57
58    fn try_from(value: &'a Value) -> Result<Self, Self::Error> {
59        match value {
60            Value::Float(b) => Ok(b),
61            _ => Err(Error::new(format!("Cannot convert {} into &f64", value.type_hint()))),
62        }
63    }
64}
65
66impl<'a> TryFrom<&'a Value> for Option<&'a f64> {
67
68    type Error = Error;
69
70    fn try_from(value: &'a Value) -> Result<Self, Self::Error> {
71        match value {
72            Value::Null => Ok(None),
73            Value::Float(b) => Ok(Some(b)),
74            _ => Err(Error::new(format!("Cannot convert {} into Option<&f64>", value.type_hint()))),
75        }
76    }
77}
78