reifydb_type/value/
to_value.rs1use crate::value::{
5 Value,
6 date::Date,
7 datetime::DateTime,
8 decimal::Decimal,
9 duration::Duration,
10 identity::IdentityId,
11 int::Int,
12 ordered_f32::OrderedF32,
13 ordered_f64::OrderedF64,
14 time::Time,
15 r#type::Type,
16 uint::Uint,
17 uuid::{Uuid4, Uuid7},
18};
19
20pub trait ToValue {
21 fn to_value(&self) -> Value;
22}
23
24impl ToValue for i8 {
25 fn to_value(&self) -> Value {
26 Value::Int1(*self)
27 }
28}
29
30impl ToValue for i16 {
31 fn to_value(&self) -> Value {
32 Value::Int2(*self)
33 }
34}
35
36impl ToValue for i32 {
37 fn to_value(&self) -> Value {
38 Value::Int4(*self)
39 }
40}
41
42impl ToValue for i64 {
43 fn to_value(&self) -> Value {
44 Value::Int8(*self)
45 }
46}
47
48impl ToValue for i128 {
49 fn to_value(&self) -> Value {
50 Value::Int16(*self)
51 }
52}
53
54impl ToValue for u8 {
55 fn to_value(&self) -> Value {
56 Value::Uint1(*self)
57 }
58}
59
60impl ToValue for u16 {
61 fn to_value(&self) -> Value {
62 Value::Uint2(*self)
63 }
64}
65
66impl ToValue for u32 {
67 fn to_value(&self) -> Value {
68 Value::Uint4(*self)
69 }
70}
71
72impl ToValue for u64 {
73 fn to_value(&self) -> Value {
74 Value::Uint8(*self)
75 }
76}
77
78impl ToValue for u128 {
79 fn to_value(&self) -> Value {
80 Value::Uint16(*self)
81 }
82}
83
84impl ToValue for f32 {
85 fn to_value(&self) -> Value {
86 OrderedF32::try_from(*self).map(Value::Float4).unwrap_or(Value::None {
87 inner: Type::Float4,
88 })
89 }
90}
91
92impl ToValue for f64 {
93 fn to_value(&self) -> Value {
94 OrderedF64::try_from(*self).map(Value::Float8).unwrap_or(Value::None {
95 inner: Type::Float8,
96 })
97 }
98}
99
100impl ToValue for Decimal {
101 fn to_value(&self) -> Value {
102 Value::Decimal(self.clone())
103 }
104}
105
106impl ToValue for Int {
107 fn to_value(&self) -> Value {
108 Value::Int(self.clone())
109 }
110}
111
112impl ToValue for Uint {
113 fn to_value(&self) -> Value {
114 Value::Uint(self.clone())
115 }
116}
117
118impl ToValue for Date {
119 fn to_value(&self) -> Value {
120 Value::Date(*self)
121 }
122}
123
124impl ToValue for DateTime {
125 fn to_value(&self) -> Value {
126 Value::DateTime(*self)
127 }
128}
129
130impl ToValue for Time {
131 fn to_value(&self) -> Value {
132 Value::Time(*self)
133 }
134}
135
136impl ToValue for Duration {
137 fn to_value(&self) -> Value {
138 Value::Duration(*self)
139 }
140}
141
142impl ToValue for Uuid4 {
143 fn to_value(&self) -> Value {
144 Value::Uuid4(*self)
145 }
146}
147
148impl ToValue for Uuid7 {
149 fn to_value(&self) -> Value {
150 Value::Uuid7(*self)
151 }
152}
153
154impl ToValue for IdentityId {
155 fn to_value(&self) -> Value {
156 Value::IdentityId(*self)
157 }
158}