Skip to main content

reifydb_type/value/
is.rs

1// SPDX-License-Identifier: MIT
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	time::Time,
13	r#type::get::GetType,
14	uuid::{Uuid4, Uuid7},
15};
16
17pub trait IsNumber: Display + Clone + Debug + PartialEq + PartialOrd + GetType + Default + 'static {}
18pub trait IsTemporal: Display + Clone + Debug + PartialEq + PartialOrd + GetType + Default + 'static {}
19pub trait IsUuid: Display + Clone + Debug + PartialEq + PartialOrd + GetType + Default + 'static {}
20
21pub trait IsFloat: IsNumber {}
22
23impl IsNumber for f32 {}
24impl IsFloat for f32 {}
25
26impl IsNumber for f64 {}
27impl IsFloat for f64 {}
28
29pub trait IsInt: IsNumber {}
30
31impl IsNumber for i8 {}
32impl IsInt for i8 {}
33
34impl IsNumber for i16 {}
35impl IsInt for i16 {}
36
37impl IsNumber for i32 {}
38impl IsInt for i32 {}
39
40impl IsNumber for i64 {}
41impl IsInt for i64 {}
42
43impl IsNumber for i128 {}
44impl IsInt for i128 {}
45
46pub trait IsUint: IsNumber {}
47
48impl IsNumber for u8 {}
49impl IsUint for u8 {}
50
51impl IsNumber for u16 {}
52impl IsUint for u16 {}
53
54impl IsNumber for u32 {}
55impl IsUint for u32 {}
56
57impl IsNumber for u64 {}
58impl IsUint for u64 {}
59
60impl IsNumber for u128 {}
61impl IsUint for u128 {}
62
63impl IsNumber for Int {}
64impl IsInt for Int {}
65
66impl IsNumber for Uint {}
67impl IsUint for Uint {}
68
69impl IsNumber for Decimal {}
70impl IsFloat for Decimal {}
71
72pub trait IsDate: IsTemporal {}
73pub trait IsTime: IsTemporal {}
74
75impl IsTemporal for Date {}
76impl IsDate for Date {}
77
78impl IsTemporal for DateTime {}
79impl IsDate for DateTime {}
80impl IsTime for DateTime {}
81
82impl IsTemporal for Time {}
83impl IsTime for Time {}
84
85impl IsTemporal for Duration {}
86
87impl IsUuid for Uuid4 {}
88impl IsUuid for Uuid7 {}