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