1use std::{
2 usize,
3 u8,
4 u16,
5 u32,
6 u64,
7 u128,
8 isize,
9 i8,
10 i16,
11 i32,
12 i64,
13 i128
14};
15
16pub trait Bounded {
17 fn min() -> Self;
18 fn max() -> Self;
19}
20
21impl Bounded for usize {
22 fn min() -> usize { usize::MIN }
23 fn max() -> usize { usize::MAX }
24}
25
26impl Bounded for u8 {
27 fn min() -> u8 { u8::MIN }
28 fn max() -> u8 { u8::MAX }
29}
30
31impl Bounded for u16 {
32 fn min() -> u16 { u16::MIN }
33 fn max() -> u16 { u16::MAX }
34}
35
36impl Bounded for u32 {
37 fn min() -> u32 { u32::MIN }
38 fn max() -> u32 { u32::MAX }
39}
40
41impl Bounded for u64 {
42 fn min() -> u64 { u64::MIN }
43 fn max() -> u64 { u64::MAX }
44}
45
46impl Bounded for u128 {
47 fn min() -> u128 { u128::MIN }
48 fn max() -> u128 { u128::MAX }
49}
50
51impl Bounded for isize {
52 fn min() -> isize { isize::MIN }
53 fn max() -> isize { isize::MAX }
54}
55
56impl Bounded for i8 {
57 fn min() -> i8 { i8::MIN }
58 fn max() -> i8 { i8::MAX }
59}
60
61impl Bounded for i16 {
62 fn min() -> i16 { i16::MIN }
63 fn max() -> i16 { i16::MAX }
64}
65
66impl Bounded for i32 {
67 fn min() -> i32 { i32::MIN }
68 fn max() -> i32 { i32::MAX }
69}
70
71impl Bounded for i64 {
72 fn min() -> i64 { i64::MIN }
73 fn max() -> i64 { i64::MAX }
74}
75
76impl Bounded for i128 {
77 fn min() -> i128 { i128::MIN }
78 fn max() -> i128 { i128::MAX }
79}