option_operations/macros/
impl_for.rs

1macro_rules! impl_for {
2    ($trait:ident, $typ_:ty, $block:tt) => {
3        impl $trait for $typ_ $block
4    };
5}
6
7macro_rules! impl_for_ints {
8    ($trait:ident, $block:tt) => {
9        impl_for!($trait, i8, $block);
10        impl_for!($trait, i16, $block);
11        impl_for!($trait, i32, $block);
12        impl_for!($trait, i64, $block);
13        impl_for!($trait, i128, $block);
14        impl_for!($trait, u8, $block);
15        impl_for!($trait, u16, $block);
16        impl_for!($trait, u32, $block);
17        impl_for!($trait, u64, $block);
18        impl_for!($trait, u128, $block);
19    };
20}
21
22macro_rules! impl_for_floats {
23    ($trait:ident, $block:tt) => {
24        impl_for!($trait, f32, $block);
25        impl_for!($trait, f64, $block);
26    };
27}
28
29macro_rules! impl_for_numerics {
30    ($trait:ident, $block:tt) => {
31        impl_for_ints!($trait, $block);
32        impl_for_floats!($trait, $block);
33    };
34}
35
36macro_rules! impl_for_time_types {
37    ($trait:ident, $block:tt) => {
38        impl_for!($trait, core::time::Duration, $block);
39        #[cfg(feature = "std")]
40        impl_for!($trait, std::time::Instant, $block);
41        #[cfg(feature = "std")]
42        impl_for!($trait, std::time::SystemTime, $block);
43    };
44}
45
46macro_rules! impl_for_ints_and_duration {
47    ($trait:ident, $block:tt) => {
48        impl_for_ints!($trait, $block);
49        impl_for!($trait, core::time::Duration, $block);
50    };
51}
52
53macro_rules! impl_for_all {
54    ($trait:ident, $block:tt) => {
55        impl_for_numerics!($trait, $block);
56        impl_for_time_types!($trait, $block);
57    };
58
59    ($trait:ident) => {
60        impl_for_all!($trait, {});
61    };
62}