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}