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::from_f32(value)
12    }
13}
14
15impl From<f64> for Value {
16    fn from(value: f64) -> Self {
17        Self::from_f64(value)
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.into_untagged() {
53            Value::Float(f) => Ok(f),
54            other => Err(Error::IncompatibleType(other.data_type())),
55        }
56    }
57}
58
59impl TryFrom<&Value> for Float {
60    type Error = Error;
61    fn try_from(value: &Value) -> Result<Self> {
62        match value.untagged() {
63            Value::Float(f) => Ok(*f),
64            other => Err(Error::IncompatibleType(other.data_type())),
65        }
66    }
67}