teo_teon/convert/into/
f64.rs1use 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