1
1
mod unchecked {
2
2
// 0 < val <= u8::MAX
3
+ #[ inline]
3
4
pub const fn u8 ( val : u8 ) -> u32 {
4
5
let val = val as u32 ;
5
6
@@ -20,6 +21,7 @@ mod unchecked {
20
21
}
21
22
22
23
// 0 < val < 100_000
24
+ #[ inline]
23
25
const fn less_than_5 ( val : u32 ) -> u32 {
24
26
// Similar to u8, when adding one of these constants to val,
25
27
// we get two possible bit patterns above the low 17 bits,
@@ -40,11 +42,13 @@ mod unchecked {
40
42
}
41
43
42
44
// 0 < val <= u16::MAX
45
+ #[ inline]
43
46
pub const fn u16 ( val : u16 ) -> u32 {
44
47
less_than_5 ( val as u32 )
45
48
}
46
49
47
50
// 0 < val <= u32::MAX
51
+ #[ inline]
48
52
pub const fn u32 ( mut val : u32 ) -> u32 {
49
53
let mut log = 0 ;
50
54
if val >= 100_000 {
@@ -55,6 +59,7 @@ mod unchecked {
55
59
}
56
60
57
61
// 0 < val <= u64::MAX
62
+ #[ inline]
58
63
pub const fn u64 ( mut val : u64 ) -> u32 {
59
64
let mut log = 0 ;
60
65
if val >= 10_000_000_000 {
@@ -69,6 +74,7 @@ mod unchecked {
69
74
}
70
75
71
76
// 0 < val <= u128::MAX
77
+ #[ inline]
72
78
pub const fn u128 ( mut val : u128 ) -> u32 {
73
79
let mut log = 0 ;
74
80
if val >= 100_000_000_000_000_000_000_000_000_000_000 {
@@ -84,33 +90,39 @@ mod unchecked {
84
90
}
85
91
86
92
// 0 < val <= i8::MAX
93
+ #[ inline]
87
94
pub const fn i8 ( val : i8 ) -> u32 {
88
95
u8 ( val as u8 )
89
96
}
90
97
91
98
// 0 < val <= i16::MAX
99
+ #[ inline]
92
100
pub const fn i16 ( val : i16 ) -> u32 {
93
101
u16 ( val as u16 )
94
102
}
95
103
96
104
// 0 < val <= i32::MAX
105
+ #[ inline]
97
106
pub const fn i32 ( val : i32 ) -> u32 {
98
107
u32 ( val as u32 )
99
108
}
100
109
101
110
// 0 < val <= i64::MAX
111
+ #[ inline]
102
112
pub const fn i64 ( val : i64 ) -> u32 {
103
113
u64 ( val as u64 )
104
114
}
105
115
106
116
// 0 < val <= i128::MAX
117
+ #[ inline]
107
118
pub const fn i128 ( val : i128 ) -> u32 {
108
119
u128 ( val as u128 )
109
120
}
110
121
}
111
122
112
123
macro_rules! impl_checked {
113
124
( $T: ident) => {
125
+ #[ inline]
114
126
pub const fn $T( val: $T) -> Option <u32 > {
115
127
if val > 0 { Some ( unchecked:: $T( val) ) } else { None }
116
128
}
0 commit comments