Skip to main content

cbor_core/value/
float.rs

1use super::*;
2
3impl From<Float> for Value {
4    fn from(value: Float) -> Self {
5        Self::Float(value)
6    }
7}
8
9impl From<f32> for Value {
10    fn from(value: f32) -> Self {
11        Self::Float(value.into())
12    }
13}
14
15impl From<f64> for Value {
16    fn from(value: f64) -> Self {
17        Self::Float(value.into())
18    }
19}
20
21impl TryFrom<Value> for f32 {
22    type Error = Error;
23    fn try_from(value: Value) -> Result<Self> {
24        value.to_f32()
25    }
26}
27
28impl TryFrom<&Value> for f32 {
29    type Error = Error;
30    fn try_from(value: &Value) -> Result<Self> {
31        value.to_f32()
32    }
33}
34
35impl TryFrom<Value> for f64 {
36    type Error = Error;
37    fn try_from(value: Value) -> Result<Self> {
38        value.to_f64()
39    }
40}
41
42impl TryFrom<&Value> for f64 {
43    type Error = Error;
44    fn try_from(value: &Value) -> Result<Self> {
45        value.to_f64()
46    }
47}
48
49impl TryFrom<Value> for Float {
50    type Error = Error;
51    fn try_from(value: Value) -> Result<Self> {
52        match value {
53            Value::Float(f) => Ok(f),
54            _ => Err(Error::IncompatibleType(value.data_type())),
55        }
56    }
57}