Skip to main content

melodium_share/
data_trait.rs

1use melodium_common::descriptor::DataTrait as CommonDataTrait;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
5#[cfg_attr(feature = "webassembly", derive(tsify::Tsify))]
6#[cfg_attr(feature = "webassembly", tsify(into_wasm_abi, from_wasm_abi))]
7pub enum DataTrait {
8    Option,
9    Vec,
10
11    // Infallilble conversions
12    ToI8,
13    ToI16,
14    ToI32,
15    ToI64,
16    ToI128,
17    ToU8,
18    ToU16,
19    ToU32,
20    ToU64,
21    ToU128,
22    ToF32,
23    ToF64,
24    ToBool,
25    ToByte,
26    ToChar,
27    ToString,
28
29    // Faillible conversions (may give `none`)
30    TryToI8,
31    TryToI16,
32    TryToI32,
33    TryToI64,
34    TryToI128,
35    TryToU8,
36    TryToU16,
37    TryToU32,
38    TryToU64,
39    TryToU128,
40    TryToF32,
41    TryToF64,
42    TryToBool,
43    TryToByte,
44    TryToChar,
45    TryToString,
46
47    SaturatingToI8,
48    SaturatingToI16,
49    SaturatingToI32,
50    SaturatingToI64,
51    SaturatingToI128,
52    SaturatingToU8,
53    SaturatingToU16,
54    SaturatingToU32,
55    SaturatingToU64,
56    SaturatingToU128,
57    SaturatingToF32,
58    SaturatingToF64,
59
60    Bounded,
61
62    Binary,
63
64    Signed,
65    Float,
66
67    PartialEquality,
68    Equality,
69    PartialOrder,
70    Order,
71
72    Add,
73    CheckedAdd,
74    SaturatingAdd,
75    WrappingAdd,
76    Sub,
77    CheckedSub,
78    SaturatingSub,
79    WrappingSub,
80    Mul,
81    CheckedMul,
82    SaturatingMul,
83    WrappingMul,
84    Div,
85    CheckedDiv,
86    Rem,
87    CheckedRem,
88    Neg,
89    CheckedNeg,
90    WrappingNeg,
91    Pow,
92    CheckedPow,
93
94    Euclid,
95    CheckedEuclid,
96
97    Hash,
98
99    Serialize,
100    Deserialize,
101
102    Display,
103}
104
105impl From<&CommonDataTrait> for DataTrait {
106    fn from(value: &CommonDataTrait) -> Self {
107        match value {
108            CommonDataTrait::Option => DataTrait::Option,
109            CommonDataTrait::Vec => DataTrait::Vec,
110
111            CommonDataTrait::ToI8 => DataTrait::ToI8,
112            CommonDataTrait::ToI16 => DataTrait::ToI16,
113            CommonDataTrait::ToI32 => DataTrait::ToI32,
114            CommonDataTrait::ToI64 => DataTrait::ToI64,
115            CommonDataTrait::ToI128 => DataTrait::ToI128,
116            CommonDataTrait::ToU8 => DataTrait::ToU8,
117            CommonDataTrait::ToU16 => DataTrait::ToU16,
118            CommonDataTrait::ToU32 => DataTrait::ToU32,
119            CommonDataTrait::ToU64 => DataTrait::ToU64,
120            CommonDataTrait::ToU128 => DataTrait::ToU128,
121            CommonDataTrait::ToF32 => DataTrait::ToF32,
122            CommonDataTrait::ToF64 => DataTrait::ToF64,
123            CommonDataTrait::ToBool => DataTrait::ToBool,
124            CommonDataTrait::ToByte => DataTrait::ToByte,
125            CommonDataTrait::ToChar => DataTrait::ToChar,
126            CommonDataTrait::ToString => DataTrait::ToString,
127
128            CommonDataTrait::TryToI8 => DataTrait::TryToI8,
129            CommonDataTrait::TryToI16 => DataTrait::TryToI16,
130            CommonDataTrait::TryToI32 => DataTrait::TryToI32,
131            CommonDataTrait::TryToI64 => DataTrait::TryToI64,
132            CommonDataTrait::TryToI128 => DataTrait::TryToI128,
133            CommonDataTrait::TryToU8 => DataTrait::TryToU8,
134            CommonDataTrait::TryToU16 => DataTrait::TryToU16,
135            CommonDataTrait::TryToU32 => DataTrait::TryToU32,
136            CommonDataTrait::TryToU64 => DataTrait::TryToU64,
137            CommonDataTrait::TryToU128 => DataTrait::TryToU128,
138            CommonDataTrait::TryToF32 => DataTrait::TryToF32,
139            CommonDataTrait::TryToF64 => DataTrait::TryToF64,
140            CommonDataTrait::TryToBool => DataTrait::TryToBool,
141            CommonDataTrait::TryToByte => DataTrait::TryToByte,
142            CommonDataTrait::TryToChar => DataTrait::TryToChar,
143            CommonDataTrait::TryToString => DataTrait::TryToString,
144
145            CommonDataTrait::SaturatingToI8 => DataTrait::SaturatingToI8,
146            CommonDataTrait::SaturatingToI16 => DataTrait::SaturatingToI16,
147            CommonDataTrait::SaturatingToI32 => DataTrait::SaturatingToI32,
148            CommonDataTrait::SaturatingToI64 => DataTrait::SaturatingToI64,
149            CommonDataTrait::SaturatingToI128 => DataTrait::SaturatingToI128,
150            CommonDataTrait::SaturatingToU8 => DataTrait::SaturatingToU8,
151            CommonDataTrait::SaturatingToU16 => DataTrait::SaturatingToU16,
152            CommonDataTrait::SaturatingToU32 => DataTrait::SaturatingToU32,
153            CommonDataTrait::SaturatingToU64 => DataTrait::SaturatingToU64,
154            CommonDataTrait::SaturatingToU128 => DataTrait::SaturatingToU128,
155            CommonDataTrait::SaturatingToF32 => DataTrait::SaturatingToF32,
156            CommonDataTrait::SaturatingToF64 => DataTrait::SaturatingToF64,
157
158            CommonDataTrait::Bounded => DataTrait::Bounded,
159
160            CommonDataTrait::Binary => DataTrait::Binary,
161
162            CommonDataTrait::Signed => DataTrait::Signed,
163            CommonDataTrait::Float => DataTrait::Float,
164
165            CommonDataTrait::PartialEquality => DataTrait::PartialEquality,
166            CommonDataTrait::Equality => DataTrait::Equality,
167            CommonDataTrait::PartialOrder => DataTrait::PartialOrder,
168            CommonDataTrait::Order => DataTrait::Order,
169
170            CommonDataTrait::Add => DataTrait::Add,
171            CommonDataTrait::CheckedAdd => DataTrait::CheckedAdd,
172            CommonDataTrait::SaturatingAdd => DataTrait::SaturatingAdd,
173            CommonDataTrait::WrappingAdd => DataTrait::WrappingAdd,
174            CommonDataTrait::Sub => DataTrait::Sub,
175            CommonDataTrait::CheckedSub => DataTrait::CheckedSub,
176            CommonDataTrait::SaturatingSub => DataTrait::SaturatingSub,
177            CommonDataTrait::WrappingSub => DataTrait::WrappingSub,
178            CommonDataTrait::Mul => DataTrait::Mul,
179            CommonDataTrait::CheckedMul => DataTrait::CheckedMul,
180            CommonDataTrait::SaturatingMul => DataTrait::SaturatingMul,
181            CommonDataTrait::WrappingMul => DataTrait::WrappingMul,
182            CommonDataTrait::Div => DataTrait::Div,
183            CommonDataTrait::CheckedDiv => DataTrait::CheckedDiv,
184            CommonDataTrait::Rem => DataTrait::Rem,
185            CommonDataTrait::CheckedRem => DataTrait::CheckedRem,
186            CommonDataTrait::Neg => DataTrait::Neg,
187            CommonDataTrait::CheckedNeg => DataTrait::CheckedNeg,
188            CommonDataTrait::WrappingNeg => DataTrait::WrappingNeg,
189            CommonDataTrait::Pow => DataTrait::Pow,
190            CommonDataTrait::CheckedPow => DataTrait::CheckedPow,
191
192            CommonDataTrait::Euclid => DataTrait::Euclid,
193            CommonDataTrait::CheckedEuclid => DataTrait::CheckedEuclid,
194
195            CommonDataTrait::Hash => DataTrait::Hash,
196
197            CommonDataTrait::Serialize => DataTrait::Serialize,
198            CommonDataTrait::Deserialize => DataTrait::Deserialize,
199
200            CommonDataTrait::Display => DataTrait::Display,
201        }
202    }
203}
204
205impl Into<CommonDataTrait> for &DataTrait {
206    fn into(self) -> CommonDataTrait {
207        match self {
208            DataTrait::Option => CommonDataTrait::Option,
209            DataTrait::Vec => CommonDataTrait::Vec,
210
211            DataTrait::ToI8 => CommonDataTrait::ToI8,
212            DataTrait::ToI16 => CommonDataTrait::ToI16,
213            DataTrait::ToI32 => CommonDataTrait::ToI32,
214            DataTrait::ToI64 => CommonDataTrait::ToI64,
215            DataTrait::ToI128 => CommonDataTrait::ToI128,
216            DataTrait::ToU8 => CommonDataTrait::ToU8,
217            DataTrait::ToU16 => CommonDataTrait::ToU16,
218            DataTrait::ToU32 => CommonDataTrait::ToU32,
219            DataTrait::ToU64 => CommonDataTrait::ToU64,
220            DataTrait::ToU128 => CommonDataTrait::ToU128,
221            DataTrait::ToF32 => CommonDataTrait::ToF32,
222            DataTrait::ToF64 => CommonDataTrait::ToF64,
223            DataTrait::ToBool => CommonDataTrait::ToBool,
224            DataTrait::ToByte => CommonDataTrait::ToByte,
225            DataTrait::ToChar => CommonDataTrait::ToChar,
226            DataTrait::ToString => CommonDataTrait::ToString,
227
228            DataTrait::TryToI8 => CommonDataTrait::TryToI8,
229            DataTrait::TryToI16 => CommonDataTrait::TryToI16,
230            DataTrait::TryToI32 => CommonDataTrait::TryToI32,
231            DataTrait::TryToI64 => CommonDataTrait::TryToI64,
232            DataTrait::TryToI128 => CommonDataTrait::TryToI128,
233            DataTrait::TryToU8 => CommonDataTrait::TryToU8,
234            DataTrait::TryToU16 => CommonDataTrait::TryToU16,
235            DataTrait::TryToU32 => CommonDataTrait::TryToU32,
236            DataTrait::TryToU64 => CommonDataTrait::TryToU64,
237            DataTrait::TryToU128 => CommonDataTrait::TryToU128,
238            DataTrait::TryToF32 => CommonDataTrait::TryToF32,
239            DataTrait::TryToF64 => CommonDataTrait::TryToF64,
240            DataTrait::TryToBool => CommonDataTrait::TryToBool,
241            DataTrait::TryToByte => CommonDataTrait::TryToByte,
242            DataTrait::TryToChar => CommonDataTrait::TryToChar,
243            DataTrait::TryToString => CommonDataTrait::TryToString,
244
245            DataTrait::SaturatingToI8 => CommonDataTrait::SaturatingToI8,
246            DataTrait::SaturatingToI16 => CommonDataTrait::SaturatingToI16,
247            DataTrait::SaturatingToI32 => CommonDataTrait::SaturatingToI32,
248            DataTrait::SaturatingToI64 => CommonDataTrait::SaturatingToI64,
249            DataTrait::SaturatingToI128 => CommonDataTrait::SaturatingToI128,
250            DataTrait::SaturatingToU8 => CommonDataTrait::SaturatingToU8,
251            DataTrait::SaturatingToU16 => CommonDataTrait::SaturatingToU16,
252            DataTrait::SaturatingToU32 => CommonDataTrait::SaturatingToU32,
253            DataTrait::SaturatingToU64 => CommonDataTrait::SaturatingToU64,
254            DataTrait::SaturatingToU128 => CommonDataTrait::SaturatingToU128,
255            DataTrait::SaturatingToF32 => CommonDataTrait::SaturatingToF32,
256            DataTrait::SaturatingToF64 => CommonDataTrait::SaturatingToF64,
257
258            DataTrait::Bounded => CommonDataTrait::Bounded,
259
260            DataTrait::Binary => CommonDataTrait::Binary,
261
262            DataTrait::Signed => CommonDataTrait::Signed,
263            DataTrait::Float => CommonDataTrait::Float,
264
265            DataTrait::PartialEquality => CommonDataTrait::PartialEquality,
266            DataTrait::Equality => CommonDataTrait::Equality,
267            DataTrait::PartialOrder => CommonDataTrait::PartialOrder,
268            DataTrait::Order => CommonDataTrait::Order,
269
270            DataTrait::Add => CommonDataTrait::Add,
271            DataTrait::CheckedAdd => CommonDataTrait::CheckedAdd,
272            DataTrait::SaturatingAdd => CommonDataTrait::SaturatingAdd,
273            DataTrait::WrappingAdd => CommonDataTrait::WrappingAdd,
274            DataTrait::Sub => CommonDataTrait::Sub,
275            DataTrait::CheckedSub => CommonDataTrait::CheckedSub,
276            DataTrait::SaturatingSub => CommonDataTrait::SaturatingSub,
277            DataTrait::WrappingSub => CommonDataTrait::WrappingSub,
278            DataTrait::Mul => CommonDataTrait::Mul,
279            DataTrait::CheckedMul => CommonDataTrait::CheckedMul,
280            DataTrait::SaturatingMul => CommonDataTrait::SaturatingMul,
281            DataTrait::WrappingMul => CommonDataTrait::WrappingMul,
282            DataTrait::Div => CommonDataTrait::Div,
283            DataTrait::CheckedDiv => CommonDataTrait::CheckedDiv,
284            DataTrait::Rem => CommonDataTrait::Rem,
285            DataTrait::CheckedRem => CommonDataTrait::CheckedRem,
286            DataTrait::Neg => CommonDataTrait::Neg,
287            DataTrait::CheckedNeg => CommonDataTrait::CheckedNeg,
288            DataTrait::WrappingNeg => CommonDataTrait::WrappingNeg,
289            DataTrait::Pow => CommonDataTrait::Pow,
290            DataTrait::CheckedPow => CommonDataTrait::CheckedPow,
291
292            DataTrait::Euclid => CommonDataTrait::Euclid,
293            DataTrait::CheckedEuclid => CommonDataTrait::CheckedEuclid,
294
295            DataTrait::Hash => CommonDataTrait::Hash,
296
297            DataTrait::Serialize => CommonDataTrait::Serialize,
298            DataTrait::Deserialize => CommonDataTrait::Deserialize,
299
300            DataTrait::Display => CommonDataTrait::Display,
301        }
302    }
303}
304
305impl Into<CommonDataTrait> for DataTrait {
306    fn into(self) -> CommonDataTrait {
307        (&self).into()
308    }
309}