reg_map/
integers.rs

1//! Types that can be placed into a [`Reg`](crate::reg::Reg).
2
3use core::fmt::Debug;
4use core::hash::Hash;
5
6/// Types that can be placed into a [`Reg`](crate::reg::Reg).
7///
8/// This trait is implemented on all primitive integer types *except* the pointer-sized types
9/// `usize` and `isize`.
10///
11/// ⚠️ This trait is sealed and cannot be implemented for types outside of this crate.
12pub trait Integer:
13    Debug + Default + Copy + Eq + Ord + Hash + Sized + Send + Sync + 'static + private::Sealed
14{
15}
16
17impl Integer for u8 {}
18impl Integer for u16 {}
19impl Integer for u32 {}
20impl Integer for u64 {}
21impl Integer for u128 {}
22impl Integer for i8 {}
23impl Integer for i16 {}
24impl Integer for i32 {}
25impl Integer for i64 {}
26impl Integer for i128 {}
27
28mod private {
29    pub trait Sealed {}
30    impl Sealed for u8 {}
31    impl Sealed for u16 {}
32    impl Sealed for u32 {}
33    impl Sealed for u64 {}
34    impl Sealed for u128 {}
35    impl Sealed for i8 {}
36    impl Sealed for i16 {}
37    impl Sealed for i32 {}
38    impl Sealed for i64 {}
39    impl Sealed for i128 {}
40}