const_cmp/
nonzero.rs

1use core::{
2    cmp::Ordering,
3    num::{
4        NonZeroI128, NonZeroI16, NonZeroI32, NonZeroI64, NonZeroI8, NonZeroIsize, NonZeroU128,
5        NonZeroU16, NonZeroU32, NonZeroU64, NonZeroU8, NonZeroUsize,
6    },
7};
8
9macro_rules! declare_nonzero_integers {
10    (
11        ($type:ty, ($eq_fn_name:ident, $cmp_fn_name:ident))
12
13        docs( $docs_eq:expr, $docs_cmp:expr, )
14    ) => {
15        __delegate_const_eq! {
16            #[doc = $docs_eq]
17            pub const fn $eq_fn_name(copy left: $type, right: $type) -> bool {
18                left.get() == right.get()
19            }
20        }
21
22        __delegate_const_ord! {
23            #[doc = $docs_cmp]
24            pub const fn $cmp_fn_name(copy left: $type, right: $type) -> Ordering {
25                cmp_int!(left.get(), right.get())
26            }
27        }
28    };
29}
30
31__declare_fns_with_docs! {
32    (NonZeroU8, (eq_nonzerou8, cmp_nonzerou8))
33    (NonZeroI8, (eq_nonzeroi8, cmp_nonzeroi8))
34    (NonZeroU16, (eq_nonzerou16, cmp_nonzerou16))
35    (NonZeroI16, (eq_nonzeroi16, cmp_nonzeroi16))
36    (NonZeroU32, (eq_nonzerou32, cmp_nonzerou32))
37    (NonZeroI32, (eq_nonzeroi32, cmp_nonzeroi32))
38    (NonZeroU64, (eq_nonzerou64, cmp_nonzerou64))
39    (NonZeroI64, (eq_nonzeroi64, cmp_nonzeroi64))
40    (NonZeroU128, (eq_nonzerou128, cmp_nonzerou128))
41    (NonZeroI128, (eq_nonzeroi128, cmp_nonzeroi128))
42    (NonZeroUsize, (eq_nonzerousize, cmp_nonzerousize))
43    (NonZeroIsize, (eq_nonzeroisize, cmp_nonzeroisize))
44
45    docs(default)
46
47    macro = declare_nonzero_integers!(),
48}
49
50__declare_fns_with_docs! {
51    (Option<NonZeroU8>, (eq_option_nonzerou8, cmp_option_nonzerou8))
52    (Option<NonZeroI8>, (eq_option_nonzeroi8, cmp_option_nonzeroi8))
53    (Option<NonZeroU16>, (eq_option_nonzerou16, cmp_option_nonzerou16))
54    (Option<NonZeroI16>, (eq_option_nonzeroi16, cmp_option_nonzeroi16))
55    (Option<NonZeroU32>, (eq_option_nonzerou32, cmp_option_nonzerou32))
56    (Option<NonZeroI32>, (eq_option_nonzeroi32, cmp_option_nonzeroi32))
57    (Option<NonZeroU64>, (eq_option_nonzerou64, cmp_option_nonzerou64))
58    (Option<NonZeroI64>, (eq_option_nonzeroi64, cmp_option_nonzeroi64))
59    (Option<NonZeroU128>, (eq_option_nonzerou128, cmp_option_nonzerou128))
60    (Option<NonZeroI128>, (eq_option_nonzeroi128, cmp_option_nonzeroi128))
61    (Option<NonZeroUsize>, (eq_option_nonzerousize, cmp_option_nonzerousize))
62    (Option<NonZeroIsize>, (eq_option_nonzeroisize, cmp_option_nonzeroisize))
63
64    docs(default)
65
66    macro = __impl_option_cmp_fns!(
67        params(l, r)
68        eq_comparison = l.get() == r.get(),
69        cmp_comparison = cmp_int!(l.get(), r.get()),
70        parameter_copyability = copy,
71    ),
72}