Skip to main content

value_trait/node/
from.rs

1#[cfg(feature = "ordered-float")]
2use ordered_float::OrderedFloat;
3
4use crate::StaticNode;
5
6/********* atoms **********/
7
8impl From<bool> for StaticNode {
9    #[inline]
10    fn from(b: bool) -> Self {
11        Self::Bool(b)
12    }
13}
14
15impl From<()> for StaticNode {
16    #[inline]
17    fn from(_b: ()) -> Self {
18        Self::Null
19    }
20}
21
22/********* i_ **********/
23impl From<i8> for StaticNode {
24    #[inline]
25    fn from(i: i8) -> Self {
26        Self::I64(i64::from(i))
27    }
28}
29
30impl From<i16> for StaticNode {
31    #[inline]
32    fn from(i: i16) -> Self {
33        Self::I64(i64::from(i))
34    }
35}
36
37impl From<i32> for StaticNode {
38    #[inline]
39    fn from(i: i32) -> Self {
40        Self::I64(i64::from(i))
41    }
42}
43
44impl From<i64> for StaticNode {
45    #[inline]
46    fn from(i: i64) -> Self {
47        Self::I64(i)
48    }
49}
50#[cfg(feature = "128bit")]
51impl From<i128> for StaticNode {
52    #[inline]
53    fn from(i: i128) -> Self {
54        Self::I128(i)
55    }
56}
57
58/********* u_ **********/
59impl From<u8> for StaticNode {
60    #[inline]
61    fn from(i: u8) -> Self {
62        Self::U64(u64::from(i))
63    }
64}
65
66impl From<u16> for StaticNode {
67    #[inline]
68    fn from(i: u16) -> Self {
69        Self::U64(u64::from(i))
70    }
71}
72
73impl From<u32> for StaticNode {
74    #[inline]
75    fn from(i: u32) -> Self {
76        Self::U64(u64::from(i))
77    }
78}
79
80impl From<u64> for StaticNode {
81    #[inline]
82    fn from(i: u64) -> Self {
83        Self::U64(i)
84    }
85}
86
87#[cfg(feature = "128bit")]
88impl From<u128> for StaticNode {
89    #[inline]
90    fn from(i: u128) -> Self {
91        Self::U128(i)
92    }
93}
94
95impl From<usize> for StaticNode {
96    #[inline]
97    fn from(i: usize) -> Self {
98        Self::U64(i as u64)
99    }
100}
101
102/********* f_ **********/
103#[cfg(not(feature = "ordered-float"))]
104impl From<f32> for StaticNode {
105    #[inline]
106    fn from(f: f32) -> Self {
107        Self::F64(f64::from(f))
108    }
109}
110
111#[cfg(not(feature = "ordered-float"))]
112impl From<f64> for StaticNode {
113    #[inline]
114    fn from(f: f64) -> Self {
115        Self::F64(f)
116    }
117}
118
119#[cfg(feature = "ordered-float")]
120impl From<f32> for StaticNode {
121    #[inline]
122    #[must_use]
123    fn from(f: f32) -> Self {
124        Self::F64(OrderedFloat::from(f64::from(f)))
125    }
126}
127
128#[cfg(feature = "ordered-float")]
129impl From<f64> for StaticNode {
130    #[inline]
131    #[must_use]
132    fn from(f: f64) -> Self {
133        Self::F64(OrderedFloat::from(f))
134    }
135}