reifydb_value/value/
is.rs1use std::fmt::{Debug, Display};
5
6use crate::value::{
7 date::Date,
8 datetime::DateTime,
9 decimal::Decimal,
10 duration::Duration,
11 identity::IdentityId,
12 time::Time,
13 to_value::ToValue,
14 uuid::{Uuid4, Uuid7},
15 value_type::get::GetType,
16};
17
18pub trait IsNumber: Display + Clone + Debug + PartialEq + PartialOrd + GetType + Default + ToValue + 'static {}
19pub trait IsTemporal: Display + Clone + Debug + PartialEq + PartialOrd + GetType + Default + ToValue + 'static {}
20pub trait IsUuid: Display + Clone + Debug + PartialEq + PartialOrd + GetType + Default + ToValue + 'static {}
21
22pub trait IsFloat: IsNumber {}
23
24impl IsNumber for f32 {}
25impl IsFloat for f32 {}
26
27impl IsNumber for f64 {}
28impl IsFloat for f64 {}
29
30pub trait IsInt: IsNumber {}
31
32impl IsNumber for i8 {}
33impl IsInt for i8 {}
34
35impl IsNumber for i16 {}
36impl IsInt for i16 {}
37
38impl IsNumber for i32 {}
39impl IsInt for i32 {}
40
41impl IsNumber for i64 {}
42impl IsInt for i64 {}
43
44impl IsNumber for i128 {}
45impl IsInt for i128 {}
46
47pub trait IsUint: IsNumber {}
48
49impl IsNumber for u8 {}
50impl IsUint for u8 {}
51
52impl IsNumber for u16 {}
53impl IsUint for u16 {}
54
55impl IsNumber for u32 {}
56impl IsUint for u32 {}
57
58impl IsNumber for u64 {}
59impl IsUint for u64 {}
60
61impl IsNumber for u128 {}
62impl IsUint for u128 {}
63
64impl IsNumber for Decimal {}
65impl IsFloat for Decimal {}
66
67pub trait IsDate: IsTemporal {}
68pub trait IsTime: IsTemporal {}
69
70impl IsTemporal for Date {}
71impl IsDate for Date {}
72
73impl IsTemporal for DateTime {}
74impl IsDate for DateTime {}
75impl IsTime for DateTime {}
76
77impl IsTemporal for Time {}
78impl IsTime for Time {}
79
80impl IsTemporal for Duration {}
81
82impl IsUuid for Uuid4 {}
83impl IsUuid for Uuid7 {}
84impl IsUuid for IdentityId {}