1use self::sealed::{DefaultOutput, MultipleOf};
4
5macro_rules! stringify_outputs {
7 (@inner $first:ty) => {
8 concat!("or `", stringify!($first), "`")
9 };
10 (@inner $first:ty, $($t:ty),+) => {
11 concat!(stringify_outputs!($first), ", ", stringify_outputs!(@inner $($t),+))
12 };
13 ($first:ty) => {
14 concat!("`", stringify!($first), "`")
15 };
16 ($($t:ty),+) => {
17 stringify_outputs!(@inner $($t),+)
18 };
19}
20
21macro_rules! declare_types {
23 ($($t:ident ($str:literal))+) => {$(
24 #[doc = concat!("A unit of time representing exactly `N` ", $str, "s.")]
25 #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
26 pub struct $t<const N: u128 = 1>;
27 )+};
28}
29
30macro_rules! impl_per {
32 ($($t:ident per {$(
33 $larger:ident : [$default_output:ty]
34
35 $($int_output:ty)|+ = $int_value:expr;
36 $($float_output:ty)|+ = $float_value:expr;
37 )+})*) => {$(
38 impl $t<1> {
39 #[doc = concat!("Obtain the number of times `", stringify!($t), "` can fit into `T`.")]
40 #[doc = concat!("If `T` is smaller than `", stringify!($t), "`, the code will fail to")]
41 $(#[doc = concat!(
47 " - `", stringify!($t), "::per(", stringify!($larger), ")` (returns `",
48 stringify!($default_output), "`)"
49 )])+
50 #[inline]
51 pub const fn per<T>(_larger: T) -> <T as DefaultOutput<Self>>::Output
52 where
53 T: MultipleOf<Self, T::Output> + DefaultOutput<Self> + Copy,
54 {
55 T::VALUE
56 }
57
58 #[doc = concat!("Obtain the number of times `", stringify!($t), "` can fit into `T`.")]
59 #[doc = concat!("If `T` is smaller than `", stringify!($t), "`, the code will fail to")]
60 $(#[doc = concat!(
65 " - `", stringify!($t), "::per(", stringify!($larger), ")` (returns ",
66 stringify_outputs!($($int_output),+ , $($float_output),+), ")"
67 )])+
68 #[inline]
69 pub const fn per_t<Output>(larger: impl MultipleOf<Self, Output> + Copy) -> Output {
70 multiple_of_value(larger)
71 }
72 }
73
74 $(
75 $(impl MultipleOf<$t, $int_output> for $larger {
76 const VALUE: $int_output = $int_value;
77 })+
78
79 $(impl MultipleOf<$t, $float_output> for $larger {
80 const VALUE: $float_output = $float_value;
81 })+
82
83 impl DefaultOutput<$t> for $larger {
84 type Output = $default_output;
85 }
86 )+
87 )*};
88}
89
90macro_rules! impl_partial_eq_ord {
92 ($($self:ident {
93 $(> $($bigger:ident)+;)?
94 $(< $($smaller:ident)+;)?
95 })*) => {$(
96 $($(
97 impl<const N: u128> PartialEq<$bigger<N>> for $self<N> {
98 #[inline]
99 fn eq(&self, _: &$bigger<N>) -> bool {
100 false
101 }
102 }
103
104 impl<const N: u128> PartialOrd<$bigger<N>> for $self<N> {
105 #[inline]
106 fn partial_cmp(&self, _: &$bigger<N>) -> Option<core::cmp::Ordering> {
107 Some(core::cmp::Ordering::Greater)
108 }
109 }
110 )+)?
111
112 $($(
113 impl<const N: u128> PartialEq<$smaller<N>> for $self<N> {
114 #[inline]
115 fn eq(&self, _: &$smaller<N>) -> bool {
116 false
117 }
118 }
119
120 impl<const N: u128> PartialOrd<$smaller<N>> for $self<N> {
121 #[inline]
122 fn partial_cmp(&self, _: &$smaller<N>) -> Option<core::cmp::Ordering> {
123 Some(core::cmp::Ordering::Less)
124 }
125 }
126 )+)?
127 )*};
128}
129
130macro_rules! impl_partial_eq_ord_for_unit {
132 ($($ty:ident)+) => {$(
133 impl<const N: u128> PartialEq<$ty<N>> for Unit<N> {
134 #[inline]
135 fn eq(&self, _: &$ty<N>) -> bool {
136 *self == Self::$ty
137 }
138 }
139
140 impl<const N: u128> PartialEq<Unit<N>> for $ty<N> {
141 #[inline]
142 fn eq(&self, other: &Unit<N>) -> bool {
143 *other == Unit::$ty
144 }
145 }
146
147 impl<const N: u128> PartialOrd<$ty<N>> for Unit<N> {
148 #[inline]
149 fn partial_cmp(&self, _: &$ty<N>) -> Option<core::cmp::Ordering> {
150 self.partial_cmp(&Unit::$ty)
151 }
152 }
153
154 impl<const N: u128> PartialOrd<Unit<N>> for $ty<N> {
155 #[inline]
156 fn partial_cmp(&self, other: &Unit<N>) -> Option<core::cmp::Ordering> {
157 Unit::$ty.partial_cmp(other)
158 }
159 }
160 )+};
161}
162
163mod sealed {
164 #[diagnostic::on_unimplemented(message = "`{Self}` is not an integer multiple of `{T}`")]
168 pub trait MultipleOf<T, Output> {
169 const VALUE: Output;
171 }
172
173 pub trait DefaultOutput<T> {
175 type Output;
177 }
178}
179
180const fn multiple_of_value<T, U, Output>(_: T) -> Output
183where
184 T: MultipleOf<U, Output> + Copy,
185{
186 T::VALUE
187}
188
189#[doc = "A unit of time representing exactly `N` nanoseconds."]
pub struct Nanosecond<const N : u128 = 1>;
#[automatically_derived]
impl<const N : u128> ::core::fmt::Debug for Nanosecond<N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Nanosecond")
}
}
#[automatically_derived]
#[doc(hidden)]
unsafe impl<const N : u128> ::core::clone::TrivialClone for Nanosecond<N> { }
#[automatically_derived]
impl<const N : u128> ::core::clone::Clone for Nanosecond<N> {
#[inline]
fn clone(&self) -> Nanosecond<N> { *self }
}
#[automatically_derived]
impl<const N : u128> ::core::marker::Copy for Nanosecond<N> { }
#[automatically_derived]
impl<const N : u128> ::core::marker::StructuralPartialEq for Nanosecond<N> { }
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialEq for Nanosecond<N> {
#[inline]
fn eq(&self, other: &Nanosecond<N>) -> bool { true }
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Eq for Nanosecond<N> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialOrd for Nanosecond<N> {
#[inline]
fn partial_cmp(&self, other: &Nanosecond<N>)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Ord for Nanosecond<N> {
#[inline]
fn cmp(&self, other: &Nanosecond<N>) -> ::core::cmp::Ordering {
::core::cmp::Ordering::Equal
}
}
#[automatically_derived]
impl<const N : u128> ::core::hash::Hash for Nanosecond<N> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {}
}
#[doc = "A unit of time representing exactly `N` microseconds."]
pub struct Microsecond<const N : u128 = 1>;
#[automatically_derived]
impl<const N : u128> ::core::fmt::Debug for Microsecond<N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Microsecond")
}
}
#[automatically_derived]
#[doc(hidden)]
unsafe impl<const N : u128> ::core::clone::TrivialClone for Microsecond<N> { }
#[automatically_derived]
impl<const N : u128> ::core::clone::Clone for Microsecond<N> {
#[inline]
fn clone(&self) -> Microsecond<N> { *self }
}
#[automatically_derived]
impl<const N : u128> ::core::marker::Copy for Microsecond<N> { }
#[automatically_derived]
impl<const N : u128> ::core::marker::StructuralPartialEq for Microsecond<N> {
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialEq for Microsecond<N> {
#[inline]
fn eq(&self, other: &Microsecond<N>) -> bool { true }
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Eq for Microsecond<N> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialOrd for Microsecond<N> {
#[inline]
fn partial_cmp(&self, other: &Microsecond<N>)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Ord for Microsecond<N> {
#[inline]
fn cmp(&self, other: &Microsecond<N>) -> ::core::cmp::Ordering {
::core::cmp::Ordering::Equal
}
}
#[automatically_derived]
impl<const N : u128> ::core::hash::Hash for Microsecond<N> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {}
}
#[doc = "A unit of time representing exactly `N` milliseconds."]
pub struct Millisecond<const N : u128 = 1>;
#[automatically_derived]
impl<const N : u128> ::core::fmt::Debug for Millisecond<N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Millisecond")
}
}
#[automatically_derived]
#[doc(hidden)]
unsafe impl<const N : u128> ::core::clone::TrivialClone for Millisecond<N> { }
#[automatically_derived]
impl<const N : u128> ::core::clone::Clone for Millisecond<N> {
#[inline]
fn clone(&self) -> Millisecond<N> { *self }
}
#[automatically_derived]
impl<const N : u128> ::core::marker::Copy for Millisecond<N> { }
#[automatically_derived]
impl<const N : u128> ::core::marker::StructuralPartialEq for Millisecond<N> {
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialEq for Millisecond<N> {
#[inline]
fn eq(&self, other: &Millisecond<N>) -> bool { true }
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Eq for Millisecond<N> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialOrd for Millisecond<N> {
#[inline]
fn partial_cmp(&self, other: &Millisecond<N>)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Ord for Millisecond<N> {
#[inline]
fn cmp(&self, other: &Millisecond<N>) -> ::core::cmp::Ordering {
::core::cmp::Ordering::Equal
}
}
#[automatically_derived]
impl<const N : u128> ::core::hash::Hash for Millisecond<N> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {}
}
#[doc = "A unit of time representing exactly `N` seconds."]
pub struct Second<const N : u128 = 1>;
#[automatically_derived]
impl<const N : u128> ::core::fmt::Debug for Second<N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Second")
}
}
#[automatically_derived]
#[doc(hidden)]
unsafe impl<const N : u128> ::core::clone::TrivialClone for Second<N> { }
#[automatically_derived]
impl<const N : u128> ::core::clone::Clone for Second<N> {
#[inline]
fn clone(&self) -> Second<N> { *self }
}
#[automatically_derived]
impl<const N : u128> ::core::marker::Copy for Second<N> { }
#[automatically_derived]
impl<const N : u128> ::core::marker::StructuralPartialEq for Second<N> { }
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialEq for Second<N> {
#[inline]
fn eq(&self, other: &Second<N>) -> bool { true }
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Eq for Second<N> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialOrd for Second<N> {
#[inline]
fn partial_cmp(&self, other: &Second<N>)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Ord for Second<N> {
#[inline]
fn cmp(&self, other: &Second<N>) -> ::core::cmp::Ordering {
::core::cmp::Ordering::Equal
}
}
#[automatically_derived]
impl<const N : u128> ::core::hash::Hash for Second<N> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {}
}
#[doc = "A unit of time representing exactly `N` minutes."]
pub struct Minute<const N : u128 = 1>;
#[automatically_derived]
impl<const N : u128> ::core::fmt::Debug for Minute<N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Minute")
}
}
#[automatically_derived]
#[doc(hidden)]
unsafe impl<const N : u128> ::core::clone::TrivialClone for Minute<N> { }
#[automatically_derived]
impl<const N : u128> ::core::clone::Clone for Minute<N> {
#[inline]
fn clone(&self) -> Minute<N> { *self }
}
#[automatically_derived]
impl<const N : u128> ::core::marker::Copy for Minute<N> { }
#[automatically_derived]
impl<const N : u128> ::core::marker::StructuralPartialEq for Minute<N> { }
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialEq for Minute<N> {
#[inline]
fn eq(&self, other: &Minute<N>) -> bool { true }
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Eq for Minute<N> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialOrd for Minute<N> {
#[inline]
fn partial_cmp(&self, other: &Minute<N>)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Ord for Minute<N> {
#[inline]
fn cmp(&self, other: &Minute<N>) -> ::core::cmp::Ordering {
::core::cmp::Ordering::Equal
}
}
#[automatically_derived]
impl<const N : u128> ::core::hash::Hash for Minute<N> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {}
}
#[doc = "A unit of time representing exactly `N` hours."]
pub struct Hour<const N : u128 = 1>;
#[automatically_derived]
impl<const N : u128> ::core::fmt::Debug for Hour<N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Hour")
}
}
#[automatically_derived]
#[doc(hidden)]
unsafe impl<const N : u128> ::core::clone::TrivialClone for Hour<N> { }
#[automatically_derived]
impl<const N : u128> ::core::clone::Clone for Hour<N> {
#[inline]
fn clone(&self) -> Hour<N> { *self }
}
#[automatically_derived]
impl<const N : u128> ::core::marker::Copy for Hour<N> { }
#[automatically_derived]
impl<const N : u128> ::core::marker::StructuralPartialEq for Hour<N> { }
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialEq for Hour<N> {
#[inline]
fn eq(&self, other: &Hour<N>) -> bool { true }
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Eq for Hour<N> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialOrd for Hour<N> {
#[inline]
fn partial_cmp(&self, other: &Hour<N>)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Ord for Hour<N> {
#[inline]
fn cmp(&self, other: &Hour<N>) -> ::core::cmp::Ordering {
::core::cmp::Ordering::Equal
}
}
#[automatically_derived]
impl<const N : u128> ::core::hash::Hash for Hour<N> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {}
}
#[doc = "A unit of time representing exactly `N` days."]
pub struct Day<const N : u128 = 1>;
#[automatically_derived]
impl<const N : u128> ::core::fmt::Debug for Day<N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Day")
}
}
#[automatically_derived]
#[doc(hidden)]
unsafe impl<const N : u128> ::core::clone::TrivialClone for Day<N> { }
#[automatically_derived]
impl<const N : u128> ::core::clone::Clone for Day<N> {
#[inline]
fn clone(&self) -> Day<N> { *self }
}
#[automatically_derived]
impl<const N : u128> ::core::marker::Copy for Day<N> { }
#[automatically_derived]
impl<const N : u128> ::core::marker::StructuralPartialEq for Day<N> { }
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialEq for Day<N> {
#[inline]
fn eq(&self, other: &Day<N>) -> bool { true }
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Eq for Day<N> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialOrd for Day<N> {
#[inline]
fn partial_cmp(&self, other: &Day<N>)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Ord for Day<N> {
#[inline]
fn cmp(&self, other: &Day<N>) -> ::core::cmp::Ordering {
::core::cmp::Ordering::Equal
}
}
#[automatically_derived]
impl<const N : u128> ::core::hash::Hash for Day<N> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {}
}
#[doc = "A unit of time representing exactly `N` weeks."]
pub struct Week<const N : u128 = 1>;
#[automatically_derived]
impl<const N : u128> ::core::fmt::Debug for Week<N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Week")
}
}
#[automatically_derived]
#[doc(hidden)]
unsafe impl<const N : u128> ::core::clone::TrivialClone for Week<N> { }
#[automatically_derived]
impl<const N : u128> ::core::clone::Clone for Week<N> {
#[inline]
fn clone(&self) -> Week<N> { *self }
}
#[automatically_derived]
impl<const N : u128> ::core::marker::Copy for Week<N> { }
#[automatically_derived]
impl<const N : u128> ::core::marker::StructuralPartialEq for Week<N> { }
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialEq for Week<N> {
#[inline]
fn eq(&self, other: &Week<N>) -> bool { true }
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Eq for Week<N> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialOrd for Week<N> {
#[inline]
fn partial_cmp(&self, other: &Week<N>)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
}
}
#[automatically_derived]
impl<const N : u128> ::core::cmp::Ord for Week<N> {
#[inline]
fn cmp(&self, other: &Week<N>) -> ::core::cmp::Ordering {
::core::cmp::Ordering::Equal
}
}
#[automatically_derived]
impl<const N : u128> ::core::hash::Hash for Week<N> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {}
}declare_types! {
190 Nanosecond ("nanosecond")
191 Microsecond ("microsecond")
192 Millisecond ("millisecond")
193 Second ("second")
194 Minute ("minute")
195 Hour ("hour")
196 Day ("day")
197 Week ("week")
198}
199
200impl Nanosecond<1> {
#[doc = "Obtain the number of times `Nanosecond` can fit into `T`."]
#[doc = "If `T` is smaller than `Nanosecond`, the code will fail to"]
#[doc = " - `Nanosecond::per(Nanosecond)` (returns `u8`)"]
#[doc = " - `Nanosecond::per(Microsecond)` (returns `u16`)"]
#[doc = " - `Nanosecond::per(Millisecond)` (returns `u32`)"]
#[doc = " - `Nanosecond::per(Second)` (returns `u32`)"]
#[doc = " - `Nanosecond::per(Minute)` (returns `u64`)"]
#[doc = " - `Nanosecond::per(Hour)` (returns `u64`)"]
#[doc = " - `Nanosecond::per(Day)` (returns `u64`)"]
#[doc = " - `Nanosecond::per(Week)` (returns `u64`)"]
#[inline]
pub const fn per<T>(_larger: T) -> <T as DefaultOutput<Self>>::Output
where T: MultipleOf<Self, T::Output> + DefaultOutput<Self> + Copy {
T::VALUE
}
#[doc = "Obtain the number of times `Nanosecond` can fit into `T`."]
#[doc = "If `T` is smaller than `Nanosecond`, the code will fail to"]
#[doc =
" - `Nanosecond::per(Nanosecond)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Nanosecond::per(Microsecond)` (returns `u16`, `u32`, `u64`, `u128`, `usize`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Nanosecond::per(Millisecond)` (returns `u32`, `u64`, `u128`, `usize`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Nanosecond::per(Second)` (returns `u32`, `u64`, `u128`, `usize`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Nanosecond::per(Minute)` (returns `u64`, `u128`, `i64`, `i128`, `f32`, or `f64`)"]
#[doc =
" - `Nanosecond::per(Hour)` (returns `u64`, `u128`, `i64`, `i128`, `f32`, or `f64`)"]
#[doc =
" - `Nanosecond::per(Day)` (returns `u64`, `u128`, `i64`, `i128`, `f32`, or `f64`)"]
#[doc =
" - `Nanosecond::per(Week)` (returns `u64`, `u128`, `i64`, `i128`, `f32`, or `f64`)"]
#[inline]
pub const fn per_t<Output>(larger: impl MultipleOf<Self, Output> + Copy)
-> Output {
multiple_of_value(larger)
}
}
impl MultipleOf<Nanosecond, u8> for Nanosecond {
const VALUE: u8 = 1;
}
impl MultipleOf<Nanosecond, u16> for Nanosecond {
const VALUE: u16 = 1;
}
impl MultipleOf<Nanosecond, u32> for Nanosecond {
const VALUE: u32 = 1;
}
impl MultipleOf<Nanosecond, u64> for Nanosecond {
const VALUE: u64 = 1;
}
impl MultipleOf<Nanosecond, u128> for Nanosecond {
const VALUE: u128 = 1;
}
impl MultipleOf<Nanosecond, usize> for Nanosecond {
const VALUE: usize = 1;
}
impl MultipleOf<Nanosecond, i8> for Nanosecond {
const VALUE: i8 = 1;
}
impl MultipleOf<Nanosecond, i16> for Nanosecond {
const VALUE: i16 = 1;
}
impl MultipleOf<Nanosecond, i32> for Nanosecond {
const VALUE: i32 = 1;
}
impl MultipleOf<Nanosecond, i64> for Nanosecond {
const VALUE: i64 = 1;
}
impl MultipleOf<Nanosecond, i128> for Nanosecond {
const VALUE: i128 = 1;
}
impl MultipleOf<Nanosecond, isize> for Nanosecond {
const VALUE: isize = 1;
}
impl MultipleOf<Nanosecond, f32> for Nanosecond {
const VALUE: f32 = 1.;
}
impl MultipleOf<Nanosecond, f64> for Nanosecond {
const VALUE: f64 = 1.;
}
impl DefaultOutput<Nanosecond> for Nanosecond {
type Output = u8;
}
impl MultipleOf<Nanosecond, u16> for Microsecond {
const VALUE: u16 = 1_000;
}
impl MultipleOf<Nanosecond, u32> for Microsecond {
const VALUE: u32 = 1_000;
}
impl MultipleOf<Nanosecond, u64> for Microsecond {
const VALUE: u64 = 1_000;
}
impl MultipleOf<Nanosecond, u128> for Microsecond {
const VALUE: u128 = 1_000;
}
impl MultipleOf<Nanosecond, usize> for Microsecond {
const VALUE: usize = 1_000;
}
impl MultipleOf<Nanosecond, i16> for Microsecond {
const VALUE: i16 = 1_000;
}
impl MultipleOf<Nanosecond, i32> for Microsecond {
const VALUE: i32 = 1_000;
}
impl MultipleOf<Nanosecond, i64> for Microsecond {
const VALUE: i64 = 1_000;
}
impl MultipleOf<Nanosecond, i128> for Microsecond {
const VALUE: i128 = 1_000;
}
impl MultipleOf<Nanosecond, isize> for Microsecond {
const VALUE: isize = 1_000;
}
impl MultipleOf<Nanosecond, f32> for Microsecond {
const VALUE: f32 = 1_000.;
}
impl MultipleOf<Nanosecond, f64> for Microsecond {
const VALUE: f64 = 1_000.;
}
impl DefaultOutput<Nanosecond> for Microsecond {
type Output = u16;
}
impl MultipleOf<Nanosecond, u32> for Millisecond {
const VALUE: u32 = 1_000_000;
}
impl MultipleOf<Nanosecond, u64> for Millisecond {
const VALUE: u64 = 1_000_000;
}
impl MultipleOf<Nanosecond, u128> for Millisecond {
const VALUE: u128 = 1_000_000;
}
impl MultipleOf<Nanosecond, usize> for Millisecond {
const VALUE: usize = 1_000_000;
}
impl MultipleOf<Nanosecond, i32> for Millisecond {
const VALUE: i32 = 1_000_000;
}
impl MultipleOf<Nanosecond, i64> for Millisecond {
const VALUE: i64 = 1_000_000;
}
impl MultipleOf<Nanosecond, i128> for Millisecond {
const VALUE: i128 = 1_000_000;
}
impl MultipleOf<Nanosecond, isize> for Millisecond {
const VALUE: isize = 1_000_000;
}
impl MultipleOf<Nanosecond, f32> for Millisecond {
const VALUE: f32 = 1_000_000.;
}
impl MultipleOf<Nanosecond, f64> for Millisecond {
const VALUE: f64 = 1_000_000.;
}
impl DefaultOutput<Nanosecond> for Millisecond {
type Output = u32;
}
impl MultipleOf<Nanosecond, u32> for Second {
const VALUE: u32 = 1_000_000_000;
}
impl MultipleOf<Nanosecond, u64> for Second {
const VALUE: u64 = 1_000_000_000;
}
impl MultipleOf<Nanosecond, u128> for Second {
const VALUE: u128 = 1_000_000_000;
}
impl MultipleOf<Nanosecond, usize> for Second {
const VALUE: usize = 1_000_000_000;
}
impl MultipleOf<Nanosecond, i32> for Second {
const VALUE: i32 = 1_000_000_000;
}
impl MultipleOf<Nanosecond, i64> for Second {
const VALUE: i64 = 1_000_000_000;
}
impl MultipleOf<Nanosecond, i128> for Second {
const VALUE: i128 = 1_000_000_000;
}
impl MultipleOf<Nanosecond, isize> for Second {
const VALUE: isize = 1_000_000_000;
}
impl MultipleOf<Nanosecond, f32> for Second {
const VALUE: f32 = 1_000_000_000.;
}
impl MultipleOf<Nanosecond, f64> for Second {
const VALUE: f64 = 1_000_000_000.;
}
impl DefaultOutput<Nanosecond> for Second {
type Output = u32;
}
impl MultipleOf<Nanosecond, u64> for Minute {
const VALUE: u64 = 60_000_000_000;
}
impl MultipleOf<Nanosecond, u128> for Minute {
const VALUE: u128 = 60_000_000_000;
}
impl MultipleOf<Nanosecond, i64> for Minute {
const VALUE: i64 = 60_000_000_000;
}
impl MultipleOf<Nanosecond, i128> for Minute {
const VALUE: i128 = 60_000_000_000;
}
impl MultipleOf<Nanosecond, f32> for Minute {
const VALUE: f32 = 60_000_000_000.;
}
impl MultipleOf<Nanosecond, f64> for Minute {
const VALUE: f64 = 60_000_000_000.;
}
impl DefaultOutput<Nanosecond> for Minute {
type Output = u64;
}
impl MultipleOf<Nanosecond, u64> for Hour {
const VALUE: u64 = 3_600_000_000_000;
}
impl MultipleOf<Nanosecond, u128> for Hour {
const VALUE: u128 = 3_600_000_000_000;
}
impl MultipleOf<Nanosecond, i64> for Hour {
const VALUE: i64 = 3_600_000_000_000;
}
impl MultipleOf<Nanosecond, i128> for Hour {
const VALUE: i128 = 3_600_000_000_000;
}
impl MultipleOf<Nanosecond, f32> for Hour {
const VALUE: f32 = 3_600_000_000_000.;
}
impl MultipleOf<Nanosecond, f64> for Hour {
const VALUE: f64 = 3_600_000_000_000.;
}
impl DefaultOutput<Nanosecond> for Hour {
type Output = u64;
}
impl MultipleOf<Nanosecond, u64> for Day {
const VALUE: u64 = 86_400_000_000_000;
}
impl MultipleOf<Nanosecond, u128> for Day {
const VALUE: u128 = 86_400_000_000_000;
}
impl MultipleOf<Nanosecond, i64> for Day {
const VALUE: i64 = 86_400_000_000_000;
}
impl MultipleOf<Nanosecond, i128> for Day {
const VALUE: i128 = 86_400_000_000_000;
}
impl MultipleOf<Nanosecond, f32> for Day {
const VALUE: f32 = 86_400_000_000_000.;
}
impl MultipleOf<Nanosecond, f64> for Day {
const VALUE: f64 = 86_400_000_000_000.;
}
impl DefaultOutput<Nanosecond> for Day {
type Output = u64;
}
impl MultipleOf<Nanosecond, u64> for Week {
const VALUE: u64 = 604_800_000_000_000;
}
impl MultipleOf<Nanosecond, u128> for Week {
const VALUE: u128 = 604_800_000_000_000;
}
impl MultipleOf<Nanosecond, i64> for Week {
const VALUE: i64 = 604_800_000_000_000;
}
impl MultipleOf<Nanosecond, i128> for Week {
const VALUE: i128 = 604_800_000_000_000;
}
impl MultipleOf<Nanosecond, f32> for Week {
const VALUE: f32 = 604_800_000_000_000.;
}
impl MultipleOf<Nanosecond, f64> for Week {
const VALUE: f64 = 604_800_000_000_000.;
}
impl DefaultOutput<Nanosecond> for Week {
type Output = u64;
}
impl Microsecond<1> {
#[doc = "Obtain the number of times `Microsecond` can fit into `T`."]
#[doc = "If `T` is smaller than `Microsecond`, the code will fail to"]
#[doc = " - `Microsecond::per(Microsecond)` (returns `u8`)"]
#[doc = " - `Microsecond::per(Millisecond)` (returns `u16`)"]
#[doc = " - `Microsecond::per(Second)` (returns `u32`)"]
#[doc = " - `Microsecond::per(Minute)` (returns `u32`)"]
#[doc = " - `Microsecond::per(Hour)` (returns `u32`)"]
#[doc = " - `Microsecond::per(Day)` (returns `u64`)"]
#[doc = " - `Microsecond::per(Week)` (returns `u64`)"]
#[inline]
pub const fn per<T>(_larger: T) -> <T as DefaultOutput<Self>>::Output
where T: MultipleOf<Self, T::Output> + DefaultOutput<Self> + Copy {
T::VALUE
}
#[doc = "Obtain the number of times `Microsecond` can fit into `T`."]
#[doc = "If `T` is smaller than `Microsecond`, the code will fail to"]
#[doc =
" - `Microsecond::per(Microsecond)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Microsecond::per(Millisecond)` (returns `u16`, `u32`, `u64`, `u128`, `usize`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Microsecond::per(Second)` (returns `u32`, `u64`, `u128`, `usize`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Microsecond::per(Minute)` (returns `u32`, `u64`, `u128`, `usize`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Microsecond::per(Hour)` (returns `u32`, `u64`, `u128`, `i64`, `i128`, `f32`, or `f64`)"]
#[doc =
" - `Microsecond::per(Day)` (returns `u64`, `u128`, `i64`, `i128`, `f32`, or `f64`)"]
#[doc =
" - `Microsecond::per(Week)` (returns `u64`, `u128`, `i64`, `i128`, `f32`, or `f64`)"]
#[inline]
pub const fn per_t<Output>(larger: impl MultipleOf<Self, Output> + Copy)
-> Output {
multiple_of_value(larger)
}
}
impl MultipleOf<Microsecond, u8> for Microsecond {
const VALUE: u8 = 1;
}
impl MultipleOf<Microsecond, u16> for Microsecond {
const VALUE: u16 = 1;
}
impl MultipleOf<Microsecond, u32> for Microsecond {
const VALUE: u32 = 1;
}
impl MultipleOf<Microsecond, u64> for Microsecond {
const VALUE: u64 = 1;
}
impl MultipleOf<Microsecond, u128> for Microsecond {
const VALUE: u128 = 1;
}
impl MultipleOf<Microsecond, usize> for Microsecond {
const VALUE: usize = 1;
}
impl MultipleOf<Microsecond, i8> for Microsecond {
const VALUE: i8 = 1;
}
impl MultipleOf<Microsecond, i16> for Microsecond {
const VALUE: i16 = 1;
}
impl MultipleOf<Microsecond, i32> for Microsecond {
const VALUE: i32 = 1;
}
impl MultipleOf<Microsecond, i64> for Microsecond {
const VALUE: i64 = 1;
}
impl MultipleOf<Microsecond, i128> for Microsecond {
const VALUE: i128 = 1;
}
impl MultipleOf<Microsecond, isize> for Microsecond {
const VALUE: isize = 1;
}
impl MultipleOf<Microsecond, f32> for Microsecond {
const VALUE: f32 = 1.;
}
impl MultipleOf<Microsecond, f64> for Microsecond {
const VALUE: f64 = 1.;
}
impl DefaultOutput<Microsecond> for Microsecond {
type Output = u8;
}
impl MultipleOf<Microsecond, u16> for Millisecond {
const VALUE: u16 = 1_000;
}
impl MultipleOf<Microsecond, u32> for Millisecond {
const VALUE: u32 = 1_000;
}
impl MultipleOf<Microsecond, u64> for Millisecond {
const VALUE: u64 = 1_000;
}
impl MultipleOf<Microsecond, u128> for Millisecond {
const VALUE: u128 = 1_000;
}
impl MultipleOf<Microsecond, usize> for Millisecond {
const VALUE: usize = 1_000;
}
impl MultipleOf<Microsecond, i16> for Millisecond {
const VALUE: i16 = 1_000;
}
impl MultipleOf<Microsecond, i32> for Millisecond {
const VALUE: i32 = 1_000;
}
impl MultipleOf<Microsecond, i64> for Millisecond {
const VALUE: i64 = 1_000;
}
impl MultipleOf<Microsecond, i128> for Millisecond {
const VALUE: i128 = 1_000;
}
impl MultipleOf<Microsecond, isize> for Millisecond {
const VALUE: isize = 1_000;
}
impl MultipleOf<Microsecond, f32> for Millisecond {
const VALUE: f32 = 1_000.;
}
impl MultipleOf<Microsecond, f64> for Millisecond {
const VALUE: f64 = 1_000.;
}
impl DefaultOutput<Microsecond> for Millisecond {
type Output = u16;
}
impl MultipleOf<Microsecond, u32> for Second {
const VALUE: u32 = 1_000_000;
}
impl MultipleOf<Microsecond, u64> for Second {
const VALUE: u64 = 1_000_000;
}
impl MultipleOf<Microsecond, u128> for Second {
const VALUE: u128 = 1_000_000;
}
impl MultipleOf<Microsecond, usize> for Second {
const VALUE: usize = 1_000_000;
}
impl MultipleOf<Microsecond, i32> for Second {
const VALUE: i32 = 1_000_000;
}
impl MultipleOf<Microsecond, i64> for Second {
const VALUE: i64 = 1_000_000;
}
impl MultipleOf<Microsecond, i128> for Second {
const VALUE: i128 = 1_000_000;
}
impl MultipleOf<Microsecond, isize> for Second {
const VALUE: isize = 1_000_000;
}
impl MultipleOf<Microsecond, f32> for Second {
const VALUE: f32 = 1_000_000.;
}
impl MultipleOf<Microsecond, f64> for Second {
const VALUE: f64 = 1_000_000.;
}
impl DefaultOutput<Microsecond> for Second {
type Output = u32;
}
impl MultipleOf<Microsecond, u32> for Minute {
const VALUE: u32 = 60_000_000;
}
impl MultipleOf<Microsecond, u64> for Minute {
const VALUE: u64 = 60_000_000;
}
impl MultipleOf<Microsecond, u128> for Minute {
const VALUE: u128 = 60_000_000;
}
impl MultipleOf<Microsecond, usize> for Minute {
const VALUE: usize = 60_000_000;
}
impl MultipleOf<Microsecond, i32> for Minute {
const VALUE: i32 = 60_000_000;
}
impl MultipleOf<Microsecond, i64> for Minute {
const VALUE: i64 = 60_000_000;
}
impl MultipleOf<Microsecond, i128> for Minute {
const VALUE: i128 = 60_000_000;
}
impl MultipleOf<Microsecond, isize> for Minute {
const VALUE: isize = 60_000_000;
}
impl MultipleOf<Microsecond, f32> for Minute {
const VALUE: f32 = 60_000_000.;
}
impl MultipleOf<Microsecond, f64> for Minute {
const VALUE: f64 = 60_000_000.;
}
impl DefaultOutput<Microsecond> for Minute {
type Output = u32;
}
impl MultipleOf<Microsecond, u32> for Hour {
const VALUE: u32 = 3_600_000_000;
}
impl MultipleOf<Microsecond, u64> for Hour {
const VALUE: u64 = 3_600_000_000;
}
impl MultipleOf<Microsecond, u128> for Hour {
const VALUE: u128 = 3_600_000_000;
}
impl MultipleOf<Microsecond, i64> for Hour {
const VALUE: i64 = 3_600_000_000;
}
impl MultipleOf<Microsecond, i128> for Hour {
const VALUE: i128 = 3_600_000_000;
}
impl MultipleOf<Microsecond, f32> for Hour {
const VALUE: f32 = 3_600_000_000.;
}
impl MultipleOf<Microsecond, f64> for Hour {
const VALUE: f64 = 3_600_000_000.;
}
impl DefaultOutput<Microsecond> for Hour {
type Output = u32;
}
impl MultipleOf<Microsecond, u64> for Day {
const VALUE: u64 = 86_400_000_000;
}
impl MultipleOf<Microsecond, u128> for Day {
const VALUE: u128 = 86_400_000_000;
}
impl MultipleOf<Microsecond, i64> for Day {
const VALUE: i64 = 86_400_000_000;
}
impl MultipleOf<Microsecond, i128> for Day {
const VALUE: i128 = 86_400_000_000;
}
impl MultipleOf<Microsecond, f32> for Day {
const VALUE: f32 = 86_400_000_000.;
}
impl MultipleOf<Microsecond, f64> for Day {
const VALUE: f64 = 86_400_000_000.;
}
impl DefaultOutput<Microsecond> for Day {
type Output = u64;
}
impl MultipleOf<Microsecond, u64> for Week {
const VALUE: u64 = 604_800_000_000;
}
impl MultipleOf<Microsecond, u128> for Week {
const VALUE: u128 = 604_800_000_000;
}
impl MultipleOf<Microsecond, i64> for Week {
const VALUE: i64 = 604_800_000_000;
}
impl MultipleOf<Microsecond, i128> for Week {
const VALUE: i128 = 604_800_000_000;
}
impl MultipleOf<Microsecond, f32> for Week {
const VALUE: f32 = 604_800_000_000.;
}
impl MultipleOf<Microsecond, f64> for Week {
const VALUE: f64 = 604_800_000_000.;
}
impl DefaultOutput<Microsecond> for Week {
type Output = u64;
}
impl Millisecond<1> {
#[doc = "Obtain the number of times `Millisecond` can fit into `T`."]
#[doc = "If `T` is smaller than `Millisecond`, the code will fail to"]
#[doc = " - `Millisecond::per(Millisecond)` (returns `u8`)"]
#[doc = " - `Millisecond::per(Second)` (returns `u16`)"]
#[doc = " - `Millisecond::per(Minute)` (returns `u16`)"]
#[doc = " - `Millisecond::per(Hour)` (returns `u32`)"]
#[doc = " - `Millisecond::per(Day)` (returns `u32`)"]
#[doc = " - `Millisecond::per(Week)` (returns `u32`)"]
#[inline]
pub const fn per<T>(_larger: T) -> <T as DefaultOutput<Self>>::Output
where T: MultipleOf<Self, T::Output> + DefaultOutput<Self> + Copy {
T::VALUE
}
#[doc = "Obtain the number of times `Millisecond` can fit into `T`."]
#[doc = "If `T` is smaller than `Millisecond`, the code will fail to"]
#[doc =
" - `Millisecond::per(Millisecond)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Millisecond::per(Second)` (returns `u16`, `u32`, `u64`, `u128`, `usize`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Millisecond::per(Minute)` (returns `u16`, `u32`, `u64`, `u128`, `usize`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Millisecond::per(Hour)` (returns `u32`, `u64`, `u128`, `usize`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Millisecond::per(Day)` (returns `u32`, `u64`, `u128`, `usize`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Millisecond::per(Week)` (returns `u32`, `u64`, `u128`, `usize`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[inline]
pub const fn per_t<Output>(larger: impl MultipleOf<Self, Output> + Copy)
-> Output {
multiple_of_value(larger)
}
}
impl MultipleOf<Millisecond, u8> for Millisecond {
const VALUE: u8 = 1;
}
impl MultipleOf<Millisecond, u16> for Millisecond {
const VALUE: u16 = 1;
}
impl MultipleOf<Millisecond, u32> for Millisecond {
const VALUE: u32 = 1;
}
impl MultipleOf<Millisecond, u64> for Millisecond {
const VALUE: u64 = 1;
}
impl MultipleOf<Millisecond, u128> for Millisecond {
const VALUE: u128 = 1;
}
impl MultipleOf<Millisecond, usize> for Millisecond {
const VALUE: usize = 1;
}
impl MultipleOf<Millisecond, i8> for Millisecond {
const VALUE: i8 = 1;
}
impl MultipleOf<Millisecond, i16> for Millisecond {
const VALUE: i16 = 1;
}
impl MultipleOf<Millisecond, i32> for Millisecond {
const VALUE: i32 = 1;
}
impl MultipleOf<Millisecond, i64> for Millisecond {
const VALUE: i64 = 1;
}
impl MultipleOf<Millisecond, i128> for Millisecond {
const VALUE: i128 = 1;
}
impl MultipleOf<Millisecond, isize> for Millisecond {
const VALUE: isize = 1;
}
impl MultipleOf<Millisecond, f32> for Millisecond {
const VALUE: f32 = 1.;
}
impl MultipleOf<Millisecond, f64> for Millisecond {
const VALUE: f64 = 1.;
}
impl DefaultOutput<Millisecond> for Millisecond {
type Output = u8;
}
impl MultipleOf<Millisecond, u16> for Second {
const VALUE: u16 = 1_000;
}
impl MultipleOf<Millisecond, u32> for Second {
const VALUE: u32 = 1_000;
}
impl MultipleOf<Millisecond, u64> for Second {
const VALUE: u64 = 1_000;
}
impl MultipleOf<Millisecond, u128> for Second {
const VALUE: u128 = 1_000;
}
impl MultipleOf<Millisecond, usize> for Second {
const VALUE: usize = 1_000;
}
impl MultipleOf<Millisecond, i16> for Second {
const VALUE: i16 = 1_000;
}
impl MultipleOf<Millisecond, i32> for Second {
const VALUE: i32 = 1_000;
}
impl MultipleOf<Millisecond, i64> for Second {
const VALUE: i64 = 1_000;
}
impl MultipleOf<Millisecond, i128> for Second {
const VALUE: i128 = 1_000;
}
impl MultipleOf<Millisecond, isize> for Second {
const VALUE: isize = 1_000;
}
impl MultipleOf<Millisecond, f32> for Second {
const VALUE: f32 = 1_000.;
}
impl MultipleOf<Millisecond, f64> for Second {
const VALUE: f64 = 1_000.;
}
impl DefaultOutput<Millisecond> for Second {
type Output = u16;
}
impl MultipleOf<Millisecond, u16> for Minute {
const VALUE: u16 = 60_000;
}
impl MultipleOf<Millisecond, u32> for Minute {
const VALUE: u32 = 60_000;
}
impl MultipleOf<Millisecond, u64> for Minute {
const VALUE: u64 = 60_000;
}
impl MultipleOf<Millisecond, u128> for Minute {
const VALUE: u128 = 60_000;
}
impl MultipleOf<Millisecond, usize> for Minute {
const VALUE: usize = 60_000;
}
impl MultipleOf<Millisecond, i32> for Minute {
const VALUE: i32 = 60_000;
}
impl MultipleOf<Millisecond, i64> for Minute {
const VALUE: i64 = 60_000;
}
impl MultipleOf<Millisecond, i128> for Minute {
const VALUE: i128 = 60_000;
}
impl MultipleOf<Millisecond, isize> for Minute {
const VALUE: isize = 60_000;
}
impl MultipleOf<Millisecond, f32> for Minute {
const VALUE: f32 = 60_000.;
}
impl MultipleOf<Millisecond, f64> for Minute {
const VALUE: f64 = 60_000.;
}
impl DefaultOutput<Millisecond> for Minute {
type Output = u16;
}
impl MultipleOf<Millisecond, u32> for Hour {
const VALUE: u32 = 3_600_000;
}
impl MultipleOf<Millisecond, u64> for Hour {
const VALUE: u64 = 3_600_000;
}
impl MultipleOf<Millisecond, u128> for Hour {
const VALUE: u128 = 3_600_000;
}
impl MultipleOf<Millisecond, usize> for Hour {
const VALUE: usize = 3_600_000;
}
impl MultipleOf<Millisecond, i32> for Hour {
const VALUE: i32 = 3_600_000;
}
impl MultipleOf<Millisecond, i64> for Hour {
const VALUE: i64 = 3_600_000;
}
impl MultipleOf<Millisecond, i128> for Hour {
const VALUE: i128 = 3_600_000;
}
impl MultipleOf<Millisecond, isize> for Hour {
const VALUE: isize = 3_600_000;
}
impl MultipleOf<Millisecond, f32> for Hour {
const VALUE: f32 = 3_600_000.;
}
impl MultipleOf<Millisecond, f64> for Hour {
const VALUE: f64 = 3_600_000.;
}
impl DefaultOutput<Millisecond> for Hour {
type Output = u32;
}
impl MultipleOf<Millisecond, u32> for Day {
const VALUE: u32 = 86_400_000;
}
impl MultipleOf<Millisecond, u64> for Day {
const VALUE: u64 = 86_400_000;
}
impl MultipleOf<Millisecond, u128> for Day {
const VALUE: u128 = 86_400_000;
}
impl MultipleOf<Millisecond, usize> for Day {
const VALUE: usize = 86_400_000;
}
impl MultipleOf<Millisecond, i32> for Day {
const VALUE: i32 = 86_400_000;
}
impl MultipleOf<Millisecond, i64> for Day {
const VALUE: i64 = 86_400_000;
}
impl MultipleOf<Millisecond, i128> for Day {
const VALUE: i128 = 86_400_000;
}
impl MultipleOf<Millisecond, isize> for Day {
const VALUE: isize = 86_400_000;
}
impl MultipleOf<Millisecond, f32> for Day {
const VALUE: f32 = 86_400_000.;
}
impl MultipleOf<Millisecond, f64> for Day {
const VALUE: f64 = 86_400_000.;
}
impl DefaultOutput<Millisecond> for Day {
type Output = u32;
}
impl MultipleOf<Millisecond, u32> for Week {
const VALUE: u32 = 604_800_000;
}
impl MultipleOf<Millisecond, u64> for Week {
const VALUE: u64 = 604_800_000;
}
impl MultipleOf<Millisecond, u128> for Week {
const VALUE: u128 = 604_800_000;
}
impl MultipleOf<Millisecond, usize> for Week {
const VALUE: usize = 604_800_000;
}
impl MultipleOf<Millisecond, i32> for Week {
const VALUE: i32 = 604_800_000;
}
impl MultipleOf<Millisecond, i64> for Week {
const VALUE: i64 = 604_800_000;
}
impl MultipleOf<Millisecond, i128> for Week {
const VALUE: i128 = 604_800_000;
}
impl MultipleOf<Millisecond, isize> for Week {
const VALUE: isize = 604_800_000;
}
impl MultipleOf<Millisecond, f32> for Week {
const VALUE: f32 = 604_800_000.;
}
impl MultipleOf<Millisecond, f64> for Week {
const VALUE: f64 = 604_800_000.;
}
impl DefaultOutput<Millisecond> for Week {
type Output = u32;
}
impl Second<1> {
#[doc = "Obtain the number of times `Second` can fit into `T`."]
#[doc = "If `T` is smaller than `Second`, the code will fail to"]
#[doc = " - `Second::per(Second)` (returns `u8`)"]
#[doc = " - `Second::per(Minute)` (returns `u8`)"]
#[doc = " - `Second::per(Hour)` (returns `u16`)"]
#[doc = " - `Second::per(Day)` (returns `u32`)"]
#[doc = " - `Second::per(Week)` (returns `u32`)"]
#[inline]
pub const fn per<T>(_larger: T) -> <T as DefaultOutput<Self>>::Output
where T: MultipleOf<Self, T::Output> + DefaultOutput<Self> + Copy {
T::VALUE
}
#[doc = "Obtain the number of times `Second` can fit into `T`."]
#[doc = "If `T` is smaller than `Second`, the code will fail to"]
#[doc =
" - `Second::per(Second)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Second::per(Minute)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Second::per(Hour)` (returns `u16`, `u32`, `u64`, `u128`, `usize`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Second::per(Day)` (returns `u32`, `u64`, `u128`, `usize`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Second::per(Week)` (returns `u32`, `u64`, `u128`, `usize`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[inline]
pub const fn per_t<Output>(larger: impl MultipleOf<Self, Output> + Copy)
-> Output {
multiple_of_value(larger)
}
}
impl MultipleOf<Second, u8> for Second {
const VALUE: u8 = 1;
}
impl MultipleOf<Second, u16> for Second {
const VALUE: u16 = 1;
}
impl MultipleOf<Second, u32> for Second {
const VALUE: u32 = 1;
}
impl MultipleOf<Second, u64> for Second {
const VALUE: u64 = 1;
}
impl MultipleOf<Second, u128> for Second {
const VALUE: u128 = 1;
}
impl MultipleOf<Second, usize> for Second {
const VALUE: usize = 1;
}
impl MultipleOf<Second, i8> for Second {
const VALUE: i8 = 1;
}
impl MultipleOf<Second, i16> for Second {
const VALUE: i16 = 1;
}
impl MultipleOf<Second, i32> for Second {
const VALUE: i32 = 1;
}
impl MultipleOf<Second, i64> for Second {
const VALUE: i64 = 1;
}
impl MultipleOf<Second, i128> for Second {
const VALUE: i128 = 1;
}
impl MultipleOf<Second, isize> for Second {
const VALUE: isize = 1;
}
impl MultipleOf<Second, f32> for Second {
const VALUE: f32 = 1.;
}
impl MultipleOf<Second, f64> for Second {
const VALUE: f64 = 1.;
}
impl DefaultOutput<Second> for Second {
type Output = u8;
}
impl MultipleOf<Second, u8> for Minute {
const VALUE: u8 = 60;
}
impl MultipleOf<Second, u16> for Minute {
const VALUE: u16 = 60;
}
impl MultipleOf<Second, u32> for Minute {
const VALUE: u32 = 60;
}
impl MultipleOf<Second, u64> for Minute {
const VALUE: u64 = 60;
}
impl MultipleOf<Second, u128> for Minute {
const VALUE: u128 = 60;
}
impl MultipleOf<Second, usize> for Minute {
const VALUE: usize = 60;
}
impl MultipleOf<Second, i8> for Minute {
const VALUE: i8 = 60;
}
impl MultipleOf<Second, i16> for Minute {
const VALUE: i16 = 60;
}
impl MultipleOf<Second, i32> for Minute {
const VALUE: i32 = 60;
}
impl MultipleOf<Second, i64> for Minute {
const VALUE: i64 = 60;
}
impl MultipleOf<Second, i128> for Minute {
const VALUE: i128 = 60;
}
impl MultipleOf<Second, isize> for Minute {
const VALUE: isize = 60;
}
impl MultipleOf<Second, f32> for Minute {
const VALUE: f32 = 60.;
}
impl MultipleOf<Second, f64> for Minute {
const VALUE: f64 = 60.;
}
impl DefaultOutput<Second> for Minute {
type Output = u8;
}
impl MultipleOf<Second, u16> for Hour {
const VALUE: u16 = 3_600;
}
impl MultipleOf<Second, u32> for Hour {
const VALUE: u32 = 3_600;
}
impl MultipleOf<Second, u64> for Hour {
const VALUE: u64 = 3_600;
}
impl MultipleOf<Second, u128> for Hour {
const VALUE: u128 = 3_600;
}
impl MultipleOf<Second, usize> for Hour {
const VALUE: usize = 3_600;
}
impl MultipleOf<Second, i16> for Hour {
const VALUE: i16 = 3_600;
}
impl MultipleOf<Second, i32> for Hour {
const VALUE: i32 = 3_600;
}
impl MultipleOf<Second, i64> for Hour {
const VALUE: i64 = 3_600;
}
impl MultipleOf<Second, i128> for Hour {
const VALUE: i128 = 3_600;
}
impl MultipleOf<Second, isize> for Hour {
const VALUE: isize = 3_600;
}
impl MultipleOf<Second, f32> for Hour {
const VALUE: f32 = 3_600.;
}
impl MultipleOf<Second, f64> for Hour {
const VALUE: f64 = 3_600.;
}
impl DefaultOutput<Second> for Hour {
type Output = u16;
}
impl MultipleOf<Second, u32> for Day {
const VALUE: u32 = 86_400;
}
impl MultipleOf<Second, u64> for Day {
const VALUE: u64 = 86_400;
}
impl MultipleOf<Second, u128> for Day {
const VALUE: u128 = 86_400;
}
impl MultipleOf<Second, usize> for Day {
const VALUE: usize = 86_400;
}
impl MultipleOf<Second, i32> for Day {
const VALUE: i32 = 86_400;
}
impl MultipleOf<Second, i64> for Day {
const VALUE: i64 = 86_400;
}
impl MultipleOf<Second, i128> for Day {
const VALUE: i128 = 86_400;
}
impl MultipleOf<Second, isize> for Day {
const VALUE: isize = 86_400;
}
impl MultipleOf<Second, f32> for Day {
const VALUE: f32 = 86_400.;
}
impl MultipleOf<Second, f64> for Day {
const VALUE: f64 = 86_400.;
}
impl DefaultOutput<Second> for Day {
type Output = u32;
}
impl MultipleOf<Second, u32> for Week {
const VALUE: u32 = 604_800;
}
impl MultipleOf<Second, u64> for Week {
const VALUE: u64 = 604_800;
}
impl MultipleOf<Second, u128> for Week {
const VALUE: u128 = 604_800;
}
impl MultipleOf<Second, usize> for Week {
const VALUE: usize = 604_800;
}
impl MultipleOf<Second, i32> for Week {
const VALUE: i32 = 604_800;
}
impl MultipleOf<Second, i64> for Week {
const VALUE: i64 = 604_800;
}
impl MultipleOf<Second, i128> for Week {
const VALUE: i128 = 604_800;
}
impl MultipleOf<Second, isize> for Week {
const VALUE: isize = 604_800;
}
impl MultipleOf<Second, f32> for Week {
const VALUE: f32 = 604_800.;
}
impl MultipleOf<Second, f64> for Week {
const VALUE: f64 = 604_800.;
}
impl DefaultOutput<Second> for Week {
type Output = u32;
}
impl Minute<1> {
#[doc = "Obtain the number of times `Minute` can fit into `T`."]
#[doc = "If `T` is smaller than `Minute`, the code will fail to"]
#[doc = " - `Minute::per(Minute)` (returns `u8`)"]
#[doc = " - `Minute::per(Hour)` (returns `u8`)"]
#[doc = " - `Minute::per(Day)` (returns `u16`)"]
#[doc = " - `Minute::per(Week)` (returns `u16`)"]
#[inline]
pub const fn per<T>(_larger: T) -> <T as DefaultOutput<Self>>::Output
where T: MultipleOf<Self, T::Output> + DefaultOutput<Self> + Copy {
T::VALUE
}
#[doc = "Obtain the number of times `Minute` can fit into `T`."]
#[doc = "If `T` is smaller than `Minute`, the code will fail to"]
#[doc =
" - `Minute::per(Minute)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Minute::per(Hour)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Minute::per(Day)` (returns `u16`, `u32`, `u64`, `u128`, `usize`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Minute::per(Week)` (returns `u16`, `u32`, `u64`, `u128`, `usize`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[inline]
pub const fn per_t<Output>(larger: impl MultipleOf<Self, Output> + Copy)
-> Output {
multiple_of_value(larger)
}
}
impl MultipleOf<Minute, u8> for Minute {
const VALUE: u8 = 1;
}
impl MultipleOf<Minute, u16> for Minute {
const VALUE: u16 = 1;
}
impl MultipleOf<Minute, u32> for Minute {
const VALUE: u32 = 1;
}
impl MultipleOf<Minute, u64> for Minute {
const VALUE: u64 = 1;
}
impl MultipleOf<Minute, u128> for Minute {
const VALUE: u128 = 1;
}
impl MultipleOf<Minute, usize> for Minute {
const VALUE: usize = 1;
}
impl MultipleOf<Minute, i8> for Minute {
const VALUE: i8 = 1;
}
impl MultipleOf<Minute, i16> for Minute {
const VALUE: i16 = 1;
}
impl MultipleOf<Minute, i32> for Minute {
const VALUE: i32 = 1;
}
impl MultipleOf<Minute, i64> for Minute {
const VALUE: i64 = 1;
}
impl MultipleOf<Minute, i128> for Minute {
const VALUE: i128 = 1;
}
impl MultipleOf<Minute, isize> for Minute {
const VALUE: isize = 1;
}
impl MultipleOf<Minute, f32> for Minute {
const VALUE: f32 = 1.;
}
impl MultipleOf<Minute, f64> for Minute {
const VALUE: f64 = 1.;
}
impl DefaultOutput<Minute> for Minute {
type Output = u8;
}
impl MultipleOf<Minute, u8> for Hour {
const VALUE: u8 = 60;
}
impl MultipleOf<Minute, u16> for Hour {
const VALUE: u16 = 60;
}
impl MultipleOf<Minute, u32> for Hour {
const VALUE: u32 = 60;
}
impl MultipleOf<Minute, u64> for Hour {
const VALUE: u64 = 60;
}
impl MultipleOf<Minute, u128> for Hour {
const VALUE: u128 = 60;
}
impl MultipleOf<Minute, usize> for Hour {
const VALUE: usize = 60;
}
impl MultipleOf<Minute, i8> for Hour {
const VALUE: i8 = 60;
}
impl MultipleOf<Minute, i16> for Hour {
const VALUE: i16 = 60;
}
impl MultipleOf<Minute, i32> for Hour {
const VALUE: i32 = 60;
}
impl MultipleOf<Minute, i64> for Hour {
const VALUE: i64 = 60;
}
impl MultipleOf<Minute, i128> for Hour {
const VALUE: i128 = 60;
}
impl MultipleOf<Minute, isize> for Hour {
const VALUE: isize = 60;
}
impl MultipleOf<Minute, f32> for Hour {
const VALUE: f32 = 60.;
}
impl MultipleOf<Minute, f64> for Hour {
const VALUE: f64 = 60.;
}
impl DefaultOutput<Minute> for Hour {
type Output = u8;
}
impl MultipleOf<Minute, u16> for Day {
const VALUE: u16 = 1_440;
}
impl MultipleOf<Minute, u32> for Day {
const VALUE: u32 = 1_440;
}
impl MultipleOf<Minute, u64> for Day {
const VALUE: u64 = 1_440;
}
impl MultipleOf<Minute, u128> for Day {
const VALUE: u128 = 1_440;
}
impl MultipleOf<Minute, usize> for Day {
const VALUE: usize = 1_440;
}
impl MultipleOf<Minute, i16> for Day {
const VALUE: i16 = 1_440;
}
impl MultipleOf<Minute, i32> for Day {
const VALUE: i32 = 1_440;
}
impl MultipleOf<Minute, i64> for Day {
const VALUE: i64 = 1_440;
}
impl MultipleOf<Minute, i128> for Day {
const VALUE: i128 = 1_440;
}
impl MultipleOf<Minute, isize> for Day {
const VALUE: isize = 1_440;
}
impl MultipleOf<Minute, f32> for Day {
const VALUE: f32 = 1_440.;
}
impl MultipleOf<Minute, f64> for Day {
const VALUE: f64 = 1_440.;
}
impl DefaultOutput<Minute> for Day {
type Output = u16;
}
impl MultipleOf<Minute, u16> for Week {
const VALUE: u16 = 10_080;
}
impl MultipleOf<Minute, u32> for Week {
const VALUE: u32 = 10_080;
}
impl MultipleOf<Minute, u64> for Week {
const VALUE: u64 = 10_080;
}
impl MultipleOf<Minute, u128> for Week {
const VALUE: u128 = 10_080;
}
impl MultipleOf<Minute, usize> for Week {
const VALUE: usize = 10_080;
}
impl MultipleOf<Minute, i16> for Week {
const VALUE: i16 = 10_080;
}
impl MultipleOf<Minute, i32> for Week {
const VALUE: i32 = 10_080;
}
impl MultipleOf<Minute, i64> for Week {
const VALUE: i64 = 10_080;
}
impl MultipleOf<Minute, i128> for Week {
const VALUE: i128 = 10_080;
}
impl MultipleOf<Minute, isize> for Week {
const VALUE: isize = 10_080;
}
impl MultipleOf<Minute, f32> for Week {
const VALUE: f32 = 10_080.;
}
impl MultipleOf<Minute, f64> for Week {
const VALUE: f64 = 10_080.;
}
impl DefaultOutput<Minute> for Week {
type Output = u16;
}
impl Hour<1> {
#[doc = "Obtain the number of times `Hour` can fit into `T`."]
#[doc = "If `T` is smaller than `Hour`, the code will fail to"]
#[doc = " - `Hour::per(Hour)` (returns `u8`)"]
#[doc = " - `Hour::per(Day)` (returns `u8`)"]
#[doc = " - `Hour::per(Week)` (returns `u8`)"]
#[inline]
pub const fn per<T>(_larger: T) -> <T as DefaultOutput<Self>>::Output
where T: MultipleOf<Self, T::Output> + DefaultOutput<Self> + Copy {
T::VALUE
}
#[doc = "Obtain the number of times `Hour` can fit into `T`."]
#[doc = "If `T` is smaller than `Hour`, the code will fail to"]
#[doc =
" - `Hour::per(Hour)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Hour::per(Day)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Hour::per(Week)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[inline]
pub const fn per_t<Output>(larger: impl MultipleOf<Self, Output> + Copy)
-> Output {
multiple_of_value(larger)
}
}
impl MultipleOf<Hour, u8> for Hour {
const VALUE: u8 = 1;
}
impl MultipleOf<Hour, u16> for Hour {
const VALUE: u16 = 1;
}
impl MultipleOf<Hour, u32> for Hour {
const VALUE: u32 = 1;
}
impl MultipleOf<Hour, u64> for Hour {
const VALUE: u64 = 1;
}
impl MultipleOf<Hour, u128> for Hour {
const VALUE: u128 = 1;
}
impl MultipleOf<Hour, usize> for Hour {
const VALUE: usize = 1;
}
impl MultipleOf<Hour, i8> for Hour {
const VALUE: i8 = 1;
}
impl MultipleOf<Hour, i16> for Hour {
const VALUE: i16 = 1;
}
impl MultipleOf<Hour, i32> for Hour {
const VALUE: i32 = 1;
}
impl MultipleOf<Hour, i64> for Hour {
const VALUE: i64 = 1;
}
impl MultipleOf<Hour, i128> for Hour {
const VALUE: i128 = 1;
}
impl MultipleOf<Hour, isize> for Hour {
const VALUE: isize = 1;
}
impl MultipleOf<Hour, f32> for Hour {
const VALUE: f32 = 1.;
}
impl MultipleOf<Hour, f64> for Hour {
const VALUE: f64 = 1.;
}
impl DefaultOutput<Hour> for Hour {
type Output = u8;
}
impl MultipleOf<Hour, u8> for Day {
const VALUE: u8 = 24;
}
impl MultipleOf<Hour, u16> for Day {
const VALUE: u16 = 24;
}
impl MultipleOf<Hour, u32> for Day {
const VALUE: u32 = 24;
}
impl MultipleOf<Hour, u64> for Day {
const VALUE: u64 = 24;
}
impl MultipleOf<Hour, u128> for Day {
const VALUE: u128 = 24;
}
impl MultipleOf<Hour, usize> for Day {
const VALUE: usize = 24;
}
impl MultipleOf<Hour, i8> for Day {
const VALUE: i8 = 24;
}
impl MultipleOf<Hour, i16> for Day {
const VALUE: i16 = 24;
}
impl MultipleOf<Hour, i32> for Day {
const VALUE: i32 = 24;
}
impl MultipleOf<Hour, i64> for Day {
const VALUE: i64 = 24;
}
impl MultipleOf<Hour, i128> for Day {
const VALUE: i128 = 24;
}
impl MultipleOf<Hour, isize> for Day {
const VALUE: isize = 24;
}
impl MultipleOf<Hour, f32> for Day {
const VALUE: f32 = 24.;
}
impl MultipleOf<Hour, f64> for Day {
const VALUE: f64 = 24.;
}
impl DefaultOutput<Hour> for Day {
type Output = u8;
}
impl MultipleOf<Hour, u8> for Week {
const VALUE: u8 = 168;
}
impl MultipleOf<Hour, u16> for Week {
const VALUE: u16 = 168;
}
impl MultipleOf<Hour, u32> for Week {
const VALUE: u32 = 168;
}
impl MultipleOf<Hour, u64> for Week {
const VALUE: u64 = 168;
}
impl MultipleOf<Hour, u128> for Week {
const VALUE: u128 = 168;
}
impl MultipleOf<Hour, usize> for Week {
const VALUE: usize = 168;
}
impl MultipleOf<Hour, i16> for Week {
const VALUE: i16 = 168;
}
impl MultipleOf<Hour, i32> for Week {
const VALUE: i32 = 168;
}
impl MultipleOf<Hour, i64> for Week {
const VALUE: i64 = 168;
}
impl MultipleOf<Hour, i128> for Week {
const VALUE: i128 = 168;
}
impl MultipleOf<Hour, isize> for Week {
const VALUE: isize = 168;
}
impl MultipleOf<Hour, f32> for Week {
const VALUE: f32 = 168.;
}
impl MultipleOf<Hour, f64> for Week {
const VALUE: f64 = 168.;
}
impl DefaultOutput<Hour> for Week {
type Output = u8;
}
impl Day<1> {
#[doc = "Obtain the number of times `Day` can fit into `T`."]
#[doc = "If `T` is smaller than `Day`, the code will fail to"]
#[doc = " - `Day::per(Day)` (returns `u8`)"]
#[doc = " - `Day::per(Week)` (returns `u8`)"]
#[inline]
pub const fn per<T>(_larger: T) -> <T as DefaultOutput<Self>>::Output
where T: MultipleOf<Self, T::Output> + DefaultOutput<Self> + Copy {
T::VALUE
}
#[doc = "Obtain the number of times `Day` can fit into `T`."]
#[doc = "If `T` is smaller than `Day`, the code will fail to"]
#[doc =
" - `Day::per(Day)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[doc =
" - `Day::per(Week)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[inline]
pub const fn per_t<Output>(larger: impl MultipleOf<Self, Output> + Copy)
-> Output {
multiple_of_value(larger)
}
}
impl MultipleOf<Day, u8> for Day {
const VALUE: u8 = 1;
}
impl MultipleOf<Day, u16> for Day {
const VALUE: u16 = 1;
}
impl MultipleOf<Day, u32> for Day {
const VALUE: u32 = 1;
}
impl MultipleOf<Day, u64> for Day {
const VALUE: u64 = 1;
}
impl MultipleOf<Day, u128> for Day {
const VALUE: u128 = 1;
}
impl MultipleOf<Day, usize> for Day {
const VALUE: usize = 1;
}
impl MultipleOf<Day, i8> for Day {
const VALUE: i8 = 1;
}
impl MultipleOf<Day, i16> for Day {
const VALUE: i16 = 1;
}
impl MultipleOf<Day, i32> for Day {
const VALUE: i32 = 1;
}
impl MultipleOf<Day, i64> for Day {
const VALUE: i64 = 1;
}
impl MultipleOf<Day, i128> for Day {
const VALUE: i128 = 1;
}
impl MultipleOf<Day, isize> for Day {
const VALUE: isize = 1;
}
impl MultipleOf<Day, f32> for Day {
const VALUE: f32 = 1.;
}
impl MultipleOf<Day, f64> for Day {
const VALUE: f64 = 1.;
}
impl DefaultOutput<Day> for Day {
type Output = u8;
}
impl MultipleOf<Day, u8> for Week {
const VALUE: u8 = 7;
}
impl MultipleOf<Day, u16> for Week {
const VALUE: u16 = 7;
}
impl MultipleOf<Day, u32> for Week {
const VALUE: u32 = 7;
}
impl MultipleOf<Day, u64> for Week {
const VALUE: u64 = 7;
}
impl MultipleOf<Day, u128> for Week {
const VALUE: u128 = 7;
}
impl MultipleOf<Day, usize> for Week {
const VALUE: usize = 7;
}
impl MultipleOf<Day, i8> for Week {
const VALUE: i8 = 7;
}
impl MultipleOf<Day, i16> for Week {
const VALUE: i16 = 7;
}
impl MultipleOf<Day, i32> for Week {
const VALUE: i32 = 7;
}
impl MultipleOf<Day, i64> for Week {
const VALUE: i64 = 7;
}
impl MultipleOf<Day, i128> for Week {
const VALUE: i128 = 7;
}
impl MultipleOf<Day, isize> for Week {
const VALUE: isize = 7;
}
impl MultipleOf<Day, f32> for Week {
const VALUE: f32 = 7.;
}
impl MultipleOf<Day, f64> for Week {
const VALUE: f64 = 7.;
}
impl DefaultOutput<Day> for Week {
type Output = u8;
}
impl Week<1> {
#[doc = "Obtain the number of times `Week` can fit into `T`."]
#[doc = "If `T` is smaller than `Week`, the code will fail to"]
#[doc = " - `Week::per(Week)` (returns `u8`)"]
#[inline]
pub const fn per<T>(_larger: T) -> <T as DefaultOutput<Self>>::Output
where T: MultipleOf<Self, T::Output> + DefaultOutput<Self> + Copy {
T::VALUE
}
#[doc = "Obtain the number of times `Week` can fit into `T`."]
#[doc = "If `T` is smaller than `Week`, the code will fail to"]
#[doc =
" - `Week::per(Week)` (returns `u8`, `u16`, `u32`, `u64`, `u128`, `usize`, `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `f32`, or `f64`)"]
#[inline]
pub const fn per_t<Output>(larger: impl MultipleOf<Self, Output> + Copy)
-> Output {
multiple_of_value(larger)
}
}
impl MultipleOf<Week, u8> for Week {
const VALUE: u8 = 1;
}
impl MultipleOf<Week, u16> for Week {
const VALUE: u16 = 1;
}
impl MultipleOf<Week, u32> for Week {
const VALUE: u32 = 1;
}
impl MultipleOf<Week, u64> for Week {
const VALUE: u64 = 1;
}
impl MultipleOf<Week, u128> for Week {
const VALUE: u128 = 1;
}
impl MultipleOf<Week, usize> for Week {
const VALUE: usize = 1;
}
impl MultipleOf<Week, i8> for Week {
const VALUE: i8 = 1;
}
impl MultipleOf<Week, i16> for Week {
const VALUE: i16 = 1;
}
impl MultipleOf<Week, i32> for Week {
const VALUE: i32 = 1;
}
impl MultipleOf<Week, i64> for Week {
const VALUE: i64 = 1;
}
impl MultipleOf<Week, i128> for Week {
const VALUE: i128 = 1;
}
impl MultipleOf<Week, isize> for Week {
const VALUE: isize = 1;
}
impl MultipleOf<Week, f32> for Week {
const VALUE: f32 = 1.;
}
impl MultipleOf<Week, f64> for Week {
const VALUE: f64 = 1.;
}
impl DefaultOutput<Week> for Week {
type Output = u8;
}impl_per! {
201 Nanosecond per {
202 Nanosecond: [u8] u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize = 1; f32|f64 = 1.;
203 Microsecond: [u16] u16|u32|u64|u128|usize|i16|i32|i64|i128|isize = 1_000; f32|f64 = 1_000.;
204 Millisecond: [u32] u32|u64|u128|usize|i32|i64|i128|isize = 1_000_000; f32|f64 = 1_000_000.;
205 Second:
206 [u32] u32|u64|u128|usize|i32|i64|i128|isize = 1_000_000_000; f32|f64 = 1_000_000_000.;
207 Minute: [u64] u64|u128|i64|i128 = 60_000_000_000; f32|f64 = 60_000_000_000.;
208 Hour: [u64] u64|u128|i64|i128 = 3_600_000_000_000; f32|f64 = 3_600_000_000_000.;
209 Day: [u64] u64|u128|i64|i128 = 86_400_000_000_000; f32|f64 = 86_400_000_000_000.;
210 Week: [u64] u64|u128|i64|i128 = 604_800_000_000_000; f32|f64 = 604_800_000_000_000.;
211 }
212 Microsecond per {
213 Microsecond: [u8] u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize = 1; f32|f64 = 1.;
214 Millisecond: [u16] u16|u32|u64|u128|usize|i16|i32|i64|i128|isize = 1_000; f32|f64 = 1_000.;
215 Second: [u32] u32|u64|u128|usize|i32|i64|i128|isize = 1_000_000; f32|f64 = 1_000_000.;
216 Minute: [u32] u32|u64|u128|usize|i32|i64|i128|isize = 60_000_000; f32|f64 = 60_000_000.;
217 Hour: [u32] u32|u64|u128|i64|i128 = 3_600_000_000; f32|f64 = 3_600_000_000.;
218 Day: [u64] u64|u128|i64|i128 = 86_400_000_000; f32|f64 = 86_400_000_000.;
219 Week: [u64] u64|u128|i64|i128 = 604_800_000_000; f32|f64 = 604_800_000_000.;
220 }
221 Millisecond per {
222 Millisecond: [u8] u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize = 1; f32|f64 = 1.;
223 Second: [u16] u16|u32|u64|u128|usize|i16|i32|i64|i128|isize = 1_000; f32|f64 = 1_000.;
224 Minute: [u16] u16|u32|u64|u128|usize|i32|i64|i128|isize = 60_000; f32|f64 = 60_000.;
225 Hour: [u32] u32|u64|u128|usize|i32|i64|i128|isize = 3_600_000; f32|f64 = 3_600_000.;
226 Day: [u32] u32|u64|u128|usize|i32|i64|i128|isize = 86_400_000; f32|f64 = 86_400_000.;
227 Week: [u32] u32|u64|u128|usize|i32|i64|i128|isize = 604_800_000; f32|f64 = 604_800_000.;
228 }
229 Second per {
230 Second: [u8] u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize = 1; f32|f64 = 1.;
231 Minute: [u8] u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize = 60; f32|f64 = 60.;
232 Hour: [u16] u16|u32|u64|u128|usize|i16|i32|i64|i128|isize = 3_600; f32|f64 = 3_600.;
233 Day: [u32] u32|u64|u128|usize|i32|i64|i128|isize = 86_400; f32|f64 = 86_400.;
234 Week: [u32] u32|u64|u128|usize|i32|i64|i128|isize = 604_800; f32|f64 = 604_800.;
235 }
236 Minute per {
237 Minute: [u8] u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize = 1; f32|f64 = 1.;
238 Hour: [u8] u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize = 60; f32|f64 = 60.;
239 Day: [u16] u16|u32|u64|u128|usize|i16|i32|i64|i128|isize = 1_440; f32|f64 = 1_440.;
240 Week: [u16] u16|u32|u64|u128|usize|i16|i32|i64|i128|isize = 10_080; f32|f64 = 10_080.;
241 }
242 Hour per {
243 Hour: [u8] u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize = 1; f32|f64 = 1.;
244 Day: [u8] u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize = 24; f32|f64 = 24.;
245 Week: [u8] u8|u16|u32|u64|u128|usize|i16|i32|i64|i128|isize = 168; f32|f64 = 168.;
246 }
247 Day per {
248 Day: [u8] u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize = 1; f32|f64 = 1.;
249 Week: [u8] u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize = 7; f32|f64 = 7.;
250 }
251 Week per {
252 Week: [u8] u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize = 1; f32|f64 = 1.;
253 }
254}
255
256impl<const N : u128> PartialEq<Microsecond<N>> for Nanosecond<N> {
#[inline]
fn eq(&self, _: &Microsecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Microsecond<N>> for Nanosecond<N> {
#[inline]
fn partial_cmp(&self, _: &Microsecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Millisecond<N>> for Nanosecond<N> {
#[inline]
fn eq(&self, _: &Millisecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Millisecond<N>> for Nanosecond<N> {
#[inline]
fn partial_cmp(&self, _: &Millisecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Second<N>> for Nanosecond<N> {
#[inline]
fn eq(&self, _: &Second<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Second<N>> for Nanosecond<N> {
#[inline]
fn partial_cmp(&self, _: &Second<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Minute<N>> for Nanosecond<N> {
#[inline]
fn eq(&self, _: &Minute<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Minute<N>> for Nanosecond<N> {
#[inline]
fn partial_cmp(&self, _: &Minute<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Hour<N>> for Nanosecond<N> {
#[inline]
fn eq(&self, _: &Hour<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Hour<N>> for Nanosecond<N> {
#[inline]
fn partial_cmp(&self, _: &Hour<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Day<N>> for Nanosecond<N> {
#[inline]
fn eq(&self, _: &Day<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Day<N>> for Nanosecond<N> {
#[inline]
fn partial_cmp(&self, _: &Day<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Week<N>> for Nanosecond<N> {
#[inline]
fn eq(&self, _: &Week<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Week<N>> for Nanosecond<N> {
#[inline]
fn partial_cmp(&self, _: &Week<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Nanosecond<N>> for Microsecond<N> {
#[inline]
fn eq(&self, _: &Nanosecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Nanosecond<N>> for Microsecond<N> {
#[inline]
fn partial_cmp(&self, _: &Nanosecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Millisecond<N>> for Microsecond<N> {
#[inline]
fn eq(&self, _: &Millisecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Millisecond<N>> for Microsecond<N> {
#[inline]
fn partial_cmp(&self, _: &Millisecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Second<N>> for Microsecond<N> {
#[inline]
fn eq(&self, _: &Second<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Second<N>> for Microsecond<N> {
#[inline]
fn partial_cmp(&self, _: &Second<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Minute<N>> for Microsecond<N> {
#[inline]
fn eq(&self, _: &Minute<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Minute<N>> for Microsecond<N> {
#[inline]
fn partial_cmp(&self, _: &Minute<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Hour<N>> for Microsecond<N> {
#[inline]
fn eq(&self, _: &Hour<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Hour<N>> for Microsecond<N> {
#[inline]
fn partial_cmp(&self, _: &Hour<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Day<N>> for Microsecond<N> {
#[inline]
fn eq(&self, _: &Day<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Day<N>> for Microsecond<N> {
#[inline]
fn partial_cmp(&self, _: &Day<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Week<N>> for Microsecond<N> {
#[inline]
fn eq(&self, _: &Week<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Week<N>> for Microsecond<N> {
#[inline]
fn partial_cmp(&self, _: &Week<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Nanosecond<N>> for Millisecond<N> {
#[inline]
fn eq(&self, _: &Nanosecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Nanosecond<N>> for Millisecond<N> {
#[inline]
fn partial_cmp(&self, _: &Nanosecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Microsecond<N>> for Millisecond<N> {
#[inline]
fn eq(&self, _: &Microsecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Microsecond<N>> for Millisecond<N> {
#[inline]
fn partial_cmp(&self, _: &Microsecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Second<N>> for Millisecond<N> {
#[inline]
fn eq(&self, _: &Second<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Second<N>> for Millisecond<N> {
#[inline]
fn partial_cmp(&self, _: &Second<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Minute<N>> for Millisecond<N> {
#[inline]
fn eq(&self, _: &Minute<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Minute<N>> for Millisecond<N> {
#[inline]
fn partial_cmp(&self, _: &Minute<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Hour<N>> for Millisecond<N> {
#[inline]
fn eq(&self, _: &Hour<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Hour<N>> for Millisecond<N> {
#[inline]
fn partial_cmp(&self, _: &Hour<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Day<N>> for Millisecond<N> {
#[inline]
fn eq(&self, _: &Day<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Day<N>> for Millisecond<N> {
#[inline]
fn partial_cmp(&self, _: &Day<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Week<N>> for Millisecond<N> {
#[inline]
fn eq(&self, _: &Week<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Week<N>> for Millisecond<N> {
#[inline]
fn partial_cmp(&self, _: &Week<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Nanosecond<N>> for Second<N> {
#[inline]
fn eq(&self, _: &Nanosecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Nanosecond<N>> for Second<N> {
#[inline]
fn partial_cmp(&self, _: &Nanosecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Microsecond<N>> for Second<N> {
#[inline]
fn eq(&self, _: &Microsecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Microsecond<N>> for Second<N> {
#[inline]
fn partial_cmp(&self, _: &Microsecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Millisecond<N>> for Second<N> {
#[inline]
fn eq(&self, _: &Millisecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Millisecond<N>> for Second<N> {
#[inline]
fn partial_cmp(&self, _: &Millisecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Minute<N>> for Second<N> {
#[inline]
fn eq(&self, _: &Minute<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Minute<N>> for Second<N> {
#[inline]
fn partial_cmp(&self, _: &Minute<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Hour<N>> for Second<N> {
#[inline]
fn eq(&self, _: &Hour<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Hour<N>> for Second<N> {
#[inline]
fn partial_cmp(&self, _: &Hour<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Day<N>> for Second<N> {
#[inline]
fn eq(&self, _: &Day<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Day<N>> for Second<N> {
#[inline]
fn partial_cmp(&self, _: &Day<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Week<N>> for Second<N> {
#[inline]
fn eq(&self, _: &Week<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Week<N>> for Second<N> {
#[inline]
fn partial_cmp(&self, _: &Week<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Nanosecond<N>> for Minute<N> {
#[inline]
fn eq(&self, _: &Nanosecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Nanosecond<N>> for Minute<N> {
#[inline]
fn partial_cmp(&self, _: &Nanosecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Microsecond<N>> for Minute<N> {
#[inline]
fn eq(&self, _: &Microsecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Microsecond<N>> for Minute<N> {
#[inline]
fn partial_cmp(&self, _: &Microsecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Millisecond<N>> for Minute<N> {
#[inline]
fn eq(&self, _: &Millisecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Millisecond<N>> for Minute<N> {
#[inline]
fn partial_cmp(&self, _: &Millisecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Second<N>> for Minute<N> {
#[inline]
fn eq(&self, _: &Second<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Second<N>> for Minute<N> {
#[inline]
fn partial_cmp(&self, _: &Second<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Hour<N>> for Minute<N> {
#[inline]
fn eq(&self, _: &Hour<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Hour<N>> for Minute<N> {
#[inline]
fn partial_cmp(&self, _: &Hour<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Day<N>> for Minute<N> {
#[inline]
fn eq(&self, _: &Day<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Day<N>> for Minute<N> {
#[inline]
fn partial_cmp(&self, _: &Day<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Week<N>> for Minute<N> {
#[inline]
fn eq(&self, _: &Week<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Week<N>> for Minute<N> {
#[inline]
fn partial_cmp(&self, _: &Week<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Nanosecond<N>> for Hour<N> {
#[inline]
fn eq(&self, _: &Nanosecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Nanosecond<N>> for Hour<N> {
#[inline]
fn partial_cmp(&self, _: &Nanosecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Microsecond<N>> for Hour<N> {
#[inline]
fn eq(&self, _: &Microsecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Microsecond<N>> for Hour<N> {
#[inline]
fn partial_cmp(&self, _: &Microsecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Millisecond<N>> for Hour<N> {
#[inline]
fn eq(&self, _: &Millisecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Millisecond<N>> for Hour<N> {
#[inline]
fn partial_cmp(&self, _: &Millisecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Second<N>> for Hour<N> {
#[inline]
fn eq(&self, _: &Second<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Second<N>> for Hour<N> {
#[inline]
fn partial_cmp(&self, _: &Second<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Minute<N>> for Hour<N> {
#[inline]
fn eq(&self, _: &Minute<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Minute<N>> for Hour<N> {
#[inline]
fn partial_cmp(&self, _: &Minute<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Day<N>> for Hour<N> {
#[inline]
fn eq(&self, _: &Day<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Day<N>> for Hour<N> {
#[inline]
fn partial_cmp(&self, _: &Day<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Week<N>> for Hour<N> {
#[inline]
fn eq(&self, _: &Week<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Week<N>> for Hour<N> {
#[inline]
fn partial_cmp(&self, _: &Week<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Nanosecond<N>> for Day<N> {
#[inline]
fn eq(&self, _: &Nanosecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Nanosecond<N>> for Day<N> {
#[inline]
fn partial_cmp(&self, _: &Nanosecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Microsecond<N>> for Day<N> {
#[inline]
fn eq(&self, _: &Microsecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Microsecond<N>> for Day<N> {
#[inline]
fn partial_cmp(&self, _: &Microsecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Millisecond<N>> for Day<N> {
#[inline]
fn eq(&self, _: &Millisecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Millisecond<N>> for Day<N> {
#[inline]
fn partial_cmp(&self, _: &Millisecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Second<N>> for Day<N> {
#[inline]
fn eq(&self, _: &Second<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Second<N>> for Day<N> {
#[inline]
fn partial_cmp(&self, _: &Second<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Minute<N>> for Day<N> {
#[inline]
fn eq(&self, _: &Minute<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Minute<N>> for Day<N> {
#[inline]
fn partial_cmp(&self, _: &Minute<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Hour<N>> for Day<N> {
#[inline]
fn eq(&self, _: &Hour<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Hour<N>> for Day<N> {
#[inline]
fn partial_cmp(&self, _: &Hour<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Week<N>> for Day<N> {
#[inline]
fn eq(&self, _: &Week<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Week<N>> for Day<N> {
#[inline]
fn partial_cmp(&self, _: &Week<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Less)
}
}
impl<const N : u128> PartialEq<Nanosecond<N>> for Week<N> {
#[inline]
fn eq(&self, _: &Nanosecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Nanosecond<N>> for Week<N> {
#[inline]
fn partial_cmp(&self, _: &Nanosecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Microsecond<N>> for Week<N> {
#[inline]
fn eq(&self, _: &Microsecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Microsecond<N>> for Week<N> {
#[inline]
fn partial_cmp(&self, _: &Microsecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Millisecond<N>> for Week<N> {
#[inline]
fn eq(&self, _: &Millisecond<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Millisecond<N>> for Week<N> {
#[inline]
fn partial_cmp(&self, _: &Millisecond<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Second<N>> for Week<N> {
#[inline]
fn eq(&self, _: &Second<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Second<N>> for Week<N> {
#[inline]
fn partial_cmp(&self, _: &Second<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Minute<N>> for Week<N> {
#[inline]
fn eq(&self, _: &Minute<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Minute<N>> for Week<N> {
#[inline]
fn partial_cmp(&self, _: &Minute<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Hour<N>> for Week<N> {
#[inline]
fn eq(&self, _: &Hour<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Hour<N>> for Week<N> {
#[inline]
fn partial_cmp(&self, _: &Hour<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}
impl<const N : u128> PartialEq<Day<N>> for Week<N> {
#[inline]
fn eq(&self, _: &Day<N>) -> bool { false }
}
impl<const N : u128> PartialOrd<Day<N>> for Week<N> {
#[inline]
fn partial_cmp(&self, _: &Day<N>) -> Option<core::cmp::Ordering> {
Some(core::cmp::Ordering::Greater)
}
}impl_partial_eq_ord! {
257 Nanosecond {
258 < Microsecond Millisecond Second Minute Hour Day Week;
259 }
260 Microsecond {
261 > Nanosecond;
262 < Millisecond Second Minute Hour Day Week;
263 }
264 Millisecond {
265 > Nanosecond Microsecond;
266 < Second Minute Hour Day Week;
267 }
268 Second {
269 > Nanosecond Microsecond Millisecond;
270 < Minute Hour Day Week;
271 }
272 Minute {
273 > Nanosecond Microsecond Millisecond Second;
274 < Hour Day Week;
275 }
276 Hour {
277 > Nanosecond Microsecond Millisecond Second Minute;
278 < Day Week;
279 }
280 Day {
281 > Nanosecond Microsecond Millisecond Second Minute Hour;
282 < Week;
283 }
284 Week {
285 > Nanosecond Microsecond Millisecond Second Minute Hour Day;
286 }
287}
288
289#[non_exhaustive]
291#[derive(#[automatically_derived]
impl<const N : u128> ::core::fmt::Debug for Unit<N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
Unit::Nanosecond => "Nanosecond",
Unit::Microsecond => "Microsecond",
Unit::Millisecond => "Millisecond",
Unit::Second => "Second",
Unit::Minute => "Minute",
Unit::Hour => "Hour",
Unit::Day => "Day",
Unit::Week => "Week",
})
}
}Debug, #[automatically_derived]
#[doc(hidden)]
unsafe impl<const N : u128> ::core::clone::TrivialClone for Unit<N> { }
#[automatically_derived]
impl<const N : u128> ::core::clone::Clone for Unit<N> {
#[inline]
fn clone(&self) -> Unit<N> { *self }
}Clone, #[automatically_derived]
impl<const N : u128> ::core::marker::Copy for Unit<N> { }Copy, #[automatically_derived]
impl<const N : u128> ::core::marker::StructuralPartialEq for Unit<N> { }
#[automatically_derived]
impl<const N : u128> ::core::cmp::PartialEq for Unit<N> {
#[inline]
fn eq(&self, other: &Unit<N>) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
impl<const N : u128> ::core::cmp::Eq for Unit<N> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}Eq, #[automatically_derived]
impl<const N : u128> ::core::cmp::PartialOrd for Unit<N> {
#[inline]
fn partial_cmp(&self, other: &Unit<N>)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]
impl<const N : u128> ::core::cmp::Ord for Unit<N> {
#[inline]
fn cmp(&self, other: &Unit<N>) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
impl<const N : u128> ::core::hash::Hash for Unit<N> {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
292pub enum Unit<const N: u128 = 1> {
293 #[expect(missing_docs)]
294 Nanosecond,
295 #[expect(missing_docs)]
296 Microsecond,
297 #[expect(missing_docs)]
298 Millisecond,
299 #[expect(missing_docs)]
300 Second,
301 #[expect(missing_docs)]
302 Minute,
303 #[expect(missing_docs)]
304 Hour,
305 #[expect(missing_docs)]
306 Day,
307 #[expect(missing_docs)]
308 Week,
309}
310
311impl<const N : u128> PartialEq<Nanosecond<N>> for Unit<N> {
#[inline]
fn eq(&self, _: &Nanosecond<N>) -> bool { *self == Self::Nanosecond }
}
impl<const N : u128> PartialEq<Unit<N>> for Nanosecond<N> {
#[inline]
fn eq(&self, other: &Unit<N>) -> bool { *other == Unit::Nanosecond }
}
impl<const N : u128> PartialOrd<Nanosecond<N>> for Unit<N> {
#[inline]
fn partial_cmp(&self, _: &Nanosecond<N>) -> Option<core::cmp::Ordering> {
self.partial_cmp(&Unit::Nanosecond)
}
}
impl<const N : u128> PartialOrd<Unit<N>> for Nanosecond<N> {
#[inline]
fn partial_cmp(&self, other: &Unit<N>) -> Option<core::cmp::Ordering> {
Unit::Nanosecond.partial_cmp(other)
}
}
impl<const N : u128> PartialEq<Microsecond<N>> for Unit<N> {
#[inline]
fn eq(&self, _: &Microsecond<N>) -> bool { *self == Self::Microsecond }
}
impl<const N : u128> PartialEq<Unit<N>> for Microsecond<N> {
#[inline]
fn eq(&self, other: &Unit<N>) -> bool { *other == Unit::Microsecond }
}
impl<const N : u128> PartialOrd<Microsecond<N>> for Unit<N> {
#[inline]
fn partial_cmp(&self, _: &Microsecond<N>) -> Option<core::cmp::Ordering> {
self.partial_cmp(&Unit::Microsecond)
}
}
impl<const N : u128> PartialOrd<Unit<N>> for Microsecond<N> {
#[inline]
fn partial_cmp(&self, other: &Unit<N>) -> Option<core::cmp::Ordering> {
Unit::Microsecond.partial_cmp(other)
}
}
impl<const N : u128> PartialEq<Millisecond<N>> for Unit<N> {
#[inline]
fn eq(&self, _: &Millisecond<N>) -> bool { *self == Self::Millisecond }
}
impl<const N : u128> PartialEq<Unit<N>> for Millisecond<N> {
#[inline]
fn eq(&self, other: &Unit<N>) -> bool { *other == Unit::Millisecond }
}
impl<const N : u128> PartialOrd<Millisecond<N>> for Unit<N> {
#[inline]
fn partial_cmp(&self, _: &Millisecond<N>) -> Option<core::cmp::Ordering> {
self.partial_cmp(&Unit::Millisecond)
}
}
impl<const N : u128> PartialOrd<Unit<N>> for Millisecond<N> {
#[inline]
fn partial_cmp(&self, other: &Unit<N>) -> Option<core::cmp::Ordering> {
Unit::Millisecond.partial_cmp(other)
}
}
impl<const N : u128> PartialEq<Second<N>> for Unit<N> {
#[inline]
fn eq(&self, _: &Second<N>) -> bool { *self == Self::Second }
}
impl<const N : u128> PartialEq<Unit<N>> for Second<N> {
#[inline]
fn eq(&self, other: &Unit<N>) -> bool { *other == Unit::Second }
}
impl<const N : u128> PartialOrd<Second<N>> for Unit<N> {
#[inline]
fn partial_cmp(&self, _: &Second<N>) -> Option<core::cmp::Ordering> {
self.partial_cmp(&Unit::Second)
}
}
impl<const N : u128> PartialOrd<Unit<N>> for Second<N> {
#[inline]
fn partial_cmp(&self, other: &Unit<N>) -> Option<core::cmp::Ordering> {
Unit::Second.partial_cmp(other)
}
}
impl<const N : u128> PartialEq<Minute<N>> for Unit<N> {
#[inline]
fn eq(&self, _: &Minute<N>) -> bool { *self == Self::Minute }
}
impl<const N : u128> PartialEq<Unit<N>> for Minute<N> {
#[inline]
fn eq(&self, other: &Unit<N>) -> bool { *other == Unit::Minute }
}
impl<const N : u128> PartialOrd<Minute<N>> for Unit<N> {
#[inline]
fn partial_cmp(&self, _: &Minute<N>) -> Option<core::cmp::Ordering> {
self.partial_cmp(&Unit::Minute)
}
}
impl<const N : u128> PartialOrd<Unit<N>> for Minute<N> {
#[inline]
fn partial_cmp(&self, other: &Unit<N>) -> Option<core::cmp::Ordering> {
Unit::Minute.partial_cmp(other)
}
}
impl<const N : u128> PartialEq<Hour<N>> for Unit<N> {
#[inline]
fn eq(&self, _: &Hour<N>) -> bool { *self == Self::Hour }
}
impl<const N : u128> PartialEq<Unit<N>> for Hour<N> {
#[inline]
fn eq(&self, other: &Unit<N>) -> bool { *other == Unit::Hour }
}
impl<const N : u128> PartialOrd<Hour<N>> for Unit<N> {
#[inline]
fn partial_cmp(&self, _: &Hour<N>) -> Option<core::cmp::Ordering> {
self.partial_cmp(&Unit::Hour)
}
}
impl<const N : u128> PartialOrd<Unit<N>> for Hour<N> {
#[inline]
fn partial_cmp(&self, other: &Unit<N>) -> Option<core::cmp::Ordering> {
Unit::Hour.partial_cmp(other)
}
}
impl<const N : u128> PartialEq<Day<N>> for Unit<N> {
#[inline]
fn eq(&self, _: &Day<N>) -> bool { *self == Self::Day }
}
impl<const N : u128> PartialEq<Unit<N>> for Day<N> {
#[inline]
fn eq(&self, other: &Unit<N>) -> bool { *other == Unit::Day }
}
impl<const N : u128> PartialOrd<Day<N>> for Unit<N> {
#[inline]
fn partial_cmp(&self, _: &Day<N>) -> Option<core::cmp::Ordering> {
self.partial_cmp(&Unit::Day)
}
}
impl<const N : u128> PartialOrd<Unit<N>> for Day<N> {
#[inline]
fn partial_cmp(&self, other: &Unit<N>) -> Option<core::cmp::Ordering> {
Unit::Day.partial_cmp(other)
}
}
impl<const N : u128> PartialEq<Week<N>> for Unit<N> {
#[inline]
fn eq(&self, _: &Week<N>) -> bool { *self == Self::Week }
}
impl<const N : u128> PartialEq<Unit<N>> for Week<N> {
#[inline]
fn eq(&self, other: &Unit<N>) -> bool { *other == Unit::Week }
}
impl<const N : u128> PartialOrd<Week<N>> for Unit<N> {
#[inline]
fn partial_cmp(&self, _: &Week<N>) -> Option<core::cmp::Ordering> {
self.partial_cmp(&Unit::Week)
}
}
impl<const N : u128> PartialOrd<Unit<N>> for Week<N> {
#[inline]
fn partial_cmp(&self, other: &Unit<N>) -> Option<core::cmp::Ordering> {
Unit::Week.partial_cmp(other)
}
}impl_partial_eq_ord_for_unit![Nanosecond Microsecond Millisecond Second Minute Hour Day Week];