sel4_async_time/
sub_key.rs

1//
2// Copyright 2023, Colias Group, LLC
3//
4// SPDX-License-Identifier: BSD-2-Clause
5//
6
7pub trait SubKey: Sized + Ord {
8    fn min() -> Self;
9
10    #[allow(dead_code)]
11    fn max() -> Self;
12
13    fn succ(&self) -> Option<Self>;
14}
15
16macro_rules! sub_key_impl {
17    ($t:ty) => {
18        impl SubKey for $t {
19            fn min() -> Self {
20                <$t>::MIN
21            }
22
23            fn max() -> Self {
24                <$t>::MAX
25            }
26
27            fn succ(&self) -> Option<Self> {
28                self.checked_add(1)
29            }
30        }
31    };
32}
33
34sub_key_impl!(u8);
35sub_key_impl!(u16);
36sub_key_impl!(u32);
37sub_key_impl!(u64);
38sub_key_impl!(u128);
39sub_key_impl!(usize);