nmbr_bounded/
bounded.rs

1use core::{usize, u8, u16, u32, u64};
2use core::{isize, i8, i16, i32, i64};
3use core::{f32, f64};
4
5pub trait Bounded {
6
7  fn min_value() -> Self;
8
9  fn max_value() -> Self;
10
11}
12
13macro_rules! impl_bounded {
14    ($t:ty, $max:expr, $min:expr) => {
15
16      impl Bounded for $t {
17
18        #[inline]
19        fn min_value() -> $t { $min }
20
21        #[inline]
22        fn max_value() -> $t { $max }
23
24      }
25    }
26}
27
28impl_bounded!(usize, usize::MAX, usize::MIN );
29impl_bounded!(u8, u8::MAX, u8::MIN );
30impl_bounded!(u16, u16::MAX, u16::MIN );
31impl_bounded!(u32, u32::MAX, u32::MIN );
32impl_bounded!(u64, u64::MAX, u64::MIN );
33
34impl_bounded!(isize, isize::MAX, isize::MIN );
35impl_bounded!(i8, i8::MAX, i8::MIN );
36impl_bounded!(i16, i16::MAX, i16::MIN );
37impl_bounded!(i32, i32::MAX, i32::MIN );
38impl_bounded!(i64, i64::MAX, i64::MIN );
39
40impl_bounded!(f32, f32::MAX, f32::MIN );
41impl_bounded!(f64, f64::MAX, f64::MIN );