File tree Expand file tree Collapse file tree 1 file changed +17
-9
lines changed Expand file tree Collapse file tree 1 file changed +17
-9
lines changed Original file line number Diff line number Diff line change @@ -126,21 +126,29 @@ const fn base128_len(arc: Arc) -> usize {
126
126
/// Split the highest 7-bits of an [`Arc`] from the rest of an arc.
127
127
///
128
128
/// Returns: `(hi, lo)`
129
- // TODO(tarcieri): always use checked arithmetic
130
- #[ allow( clippy:: arithmetic_side_effects) ]
129
+ #[ inline]
131
130
const fn split_high_bits ( arc : Arc ) -> ( u8 , Arc ) {
132
131
if arc < 0x80 {
133
132
return ( arc as u8 , 0 ) ;
134
133
}
135
134
136
- let hi_bit = 32 - arc. leading_zeros ( ) ;
135
+ let hi_bit = match 32u32 . checked_sub ( arc. leading_zeros ( ) ) {
136
+ Some ( bit) => bit,
137
+ None => unreachable ! ( ) ,
138
+ } ;
139
+
137
140
let hi_bit_mod7 = hi_bit % 7 ;
138
- let upper_bit_pos = hi_bit
139
- - if hi_bit > 0 && hi_bit_mod7 == 0 {
140
- 7
141
- } else {
142
- hi_bit_mod7
143
- } ;
141
+ let upper_bit_offset = if hi_bit > 0 && hi_bit_mod7 == 0 {
142
+ 7
143
+ } else {
144
+ hi_bit_mod7
145
+ } ;
146
+
147
+ let upper_bit_pos = match hi_bit. checked_sub ( upper_bit_offset) {
148
+ Some ( bit) => bit,
149
+ None => unreachable ! ( ) ,
150
+ } ;
151
+
144
152
let upper_bits = arc >> upper_bit_pos;
145
153
let lower_bits = arc ^ ( upper_bits << upper_bit_pos) ;
146
154
( upper_bits as u8 , lower_bits)
You can’t perform that action at this time.
0 commit comments