Skip to main content

reifydb_type/value/
is.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2025 ReifyDB
3
4use std::fmt::{Debug, Display};
5
6use super::{int::Int, uint::Uint};
7use crate::value::{
8	date::Date,
9	datetime::DateTime,
10	decimal::Decimal,
11	duration::Duration,
12	identity::IdentityId,
13	time::Time,
14	to_value::ToValue,
15	r#type::get::GetType,
16	uuid::{Uuid4, Uuid7},
17};
18
19pub trait IsNumber: Display + Clone + Debug + PartialEq + PartialOrd + GetType + Default + ToValue + 'static {}
20pub trait IsTemporal: Display + Clone + Debug + PartialEq + PartialOrd + GetType + Default + ToValue + 'static {}
21pub trait IsUuid: Display + Clone + Debug + PartialEq + PartialOrd + GetType + Default + ToValue + 'static {}
22
23pub trait IsFloat: IsNumber {}
24
25impl IsNumber for f32 {}
26impl IsFloat for f32 {}
27
28impl IsNumber for f64 {}
29impl IsFloat for f64 {}
30
31pub trait IsInt: IsNumber {}
32
33impl IsNumber for i8 {}
34impl IsInt for i8 {}
35
36impl IsNumber for i16 {}
37impl IsInt for i16 {}
38
39impl IsNumber for i32 {}
40impl IsInt for i32 {}
41
42impl IsNumber for i64 {}
43impl IsInt for i64 {}
44
45impl IsNumber for i128 {}
46impl IsInt for i128 {}
47
48pub trait IsUint: IsNumber {}
49
50impl IsNumber for u8 {}
51impl IsUint for u8 {}
52
53impl IsNumber for u16 {}
54impl IsUint for u16 {}
55
56impl IsNumber for u32 {}
57impl IsUint for u32 {}
58
59impl IsNumber for u64 {}
60impl IsUint for u64 {}
61
62impl IsNumber for u128 {}
63impl IsUint for u128 {}
64
65impl IsNumber for Int {}
66impl IsInt for Int {}
67
68impl IsNumber for Uint {}
69impl IsUint for Uint {}
70
71impl IsNumber for Decimal {}
72impl IsFloat for Decimal {}
73
74pub trait IsDate: IsTemporal {}
75pub trait IsTime: IsTemporal {}
76
77impl IsTemporal for Date {}
78impl IsDate for Date {}
79
80impl IsTemporal for DateTime {}
81impl IsDate for DateTime {}
82impl IsTime for DateTime {}
83
84impl IsTemporal for Time {}
85impl IsTime for Time {}
86
87impl IsTemporal for Duration {}
88
89impl IsUuid for Uuid4 {}
90impl IsUuid for Uuid7 {}
91impl IsUuid for IdentityId {}