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}