1use core::ptr::write;
3
4use crate::shared::U8_MASK_BOT_6;
5
6use super::alphabet::{
7 BITS, WIDTH_1, WIDTH_10, WIDTH_11, WIDTH_12, WIDTH_13, WIDTH_14, WIDTH_15, WIDTH_16, WIDTH_17,
8 WIDTH_18, WIDTH_19, WIDTH_2, WIDTH_20, WIDTH_21, WIDTH_3, WIDTH_4, WIDTH_5, WIDTH_6, WIDTH_7,
9 WIDTH_8, WIDTH_9,
10};
11
12#[inline]
14pub const fn capacity_encode_u128(n: u128) -> usize {
15 if let Some(log) = n.checked_ilog2() {
16 1 + (log / 6) as usize
17 } else {
18 1
19 }
20}
21
22pub fn encode_u128(enc: &'static [u8; BITS], n: u128) -> String {
30 let cap = capacity_encode_u128(n);
31 let mut b = Vec::<u8>::with_capacity(cap);
32 encode_u128_inner(enc, n, &mut b, cap, 0, cap);
33 unsafe { String::from_utf8_unchecked(b) }
34}
35
36pub fn encode_u128_into(enc: &'static [u8; BITS], n: u128, b: &mut Vec<u8>) {
48 let cap = capacity_encode_u128(n);
49 let len = b.len();
50 let new_len = len + cap;
51 assert!(b.capacity() >= new_len, "Missing capacity for encoding");
52 encode_u128_inner(enc, n, b, cap, len, new_len);
53}
54
55#[rustfmt::skip]
56#[inline(always)]
57fn encode_u128_inner(enc: &'static [u8; BITS], n: u128, b: &mut Vec<u8>, cap: usize, len: usize, new_len: usize) {
58 match cap {
59 22 => unsafe {
60 let end = b.as_mut_ptr().add(len);
61
62 write(end , enc[((n >> WIDTH_21) as u8 ) as usize]);
66 write(end.add( 1), enc[((n >> WIDTH_20) as u8 & U8_MASK_BOT_6) as usize]);
67 write(end.add( 2), enc[((n >> WIDTH_19) as u8 & U8_MASK_BOT_6) as usize]);
68 write(end.add( 3), enc[((n >> WIDTH_18) as u8 & U8_MASK_BOT_6) as usize]);
69 write(end.add( 4), enc[((n >> WIDTH_17) as u8 & U8_MASK_BOT_6) as usize]);
70 write(end.add( 5), enc[((n >> WIDTH_16) as u8 & U8_MASK_BOT_6) as usize]);
71 write(end.add( 6), enc[((n >> WIDTH_15) as u8 & U8_MASK_BOT_6) as usize]);
72 write(end.add( 7), enc[((n >> WIDTH_14) as u8 & U8_MASK_BOT_6) as usize]);
73 write(end.add( 8), enc[((n >> WIDTH_13) as u8 & U8_MASK_BOT_6) as usize]);
74 write(end.add( 9), enc[((n >> WIDTH_12) as u8 & U8_MASK_BOT_6) as usize]);
75 write(end.add(10), enc[((n >> WIDTH_11) as u8 & U8_MASK_BOT_6) as usize]);
76 write(end.add(11), enc[((n >> WIDTH_10) as u8 & U8_MASK_BOT_6) as usize]);
77 write(end.add(12), enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
78 write(end.add(13), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
79 write(end.add(14), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
80 write(end.add(15), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
81 write(end.add(16), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
82 write(end.add(17), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
83 write(end.add(18), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
84 write(end.add(19), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
85 write(end.add(20), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
86 write(end.add(21), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
87
88 b.set_len(new_len);
89 }
90
91 21 => unsafe {
92 let end = b.as_mut_ptr().add(len);
93
94 write(end , enc[((n >> WIDTH_20) as u8 & U8_MASK_BOT_6) as usize]);
95 write(end.add( 1), enc[((n >> WIDTH_19) as u8 & U8_MASK_BOT_6) as usize]);
96 write(end.add( 2), enc[((n >> WIDTH_18) as u8 & U8_MASK_BOT_6) as usize]);
97 write(end.add( 3), enc[((n >> WIDTH_17) as u8 & U8_MASK_BOT_6) as usize]);
98 write(end.add( 4), enc[((n >> WIDTH_16) as u8 & U8_MASK_BOT_6) as usize]);
99 write(end.add( 5), enc[((n >> WIDTH_15) as u8 & U8_MASK_BOT_6) as usize]);
100 write(end.add( 6), enc[((n >> WIDTH_14) as u8 & U8_MASK_BOT_6) as usize]);
101 write(end.add( 7), enc[((n >> WIDTH_13) as u8 & U8_MASK_BOT_6) as usize]);
102 write(end.add( 8), enc[((n >> WIDTH_12) as u8 & U8_MASK_BOT_6) as usize]);
103 write(end.add( 9), enc[((n >> WIDTH_11) as u8 & U8_MASK_BOT_6) as usize]);
104 write(end.add(10), enc[((n >> WIDTH_10) as u8 & U8_MASK_BOT_6) as usize]);
105 write(end.add(11), enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
106 write(end.add(12), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
107 write(end.add(13), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
108 write(end.add(14), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
109 write(end.add(15), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
110 write(end.add(16), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
111 write(end.add(17), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
112 write(end.add(18), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
113 write(end.add(19), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
114 write(end.add(20), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
115
116 b.set_len(new_len);
117 }
118
119 20 => unsafe {
120 let end = b.as_mut_ptr().add(len);
121
122 write(end , enc[((n >> WIDTH_19) as u8 & U8_MASK_BOT_6) as usize]);
123 write(end.add( 1), enc[((n >> WIDTH_18) as u8 & U8_MASK_BOT_6) as usize]);
124 write(end.add( 2), enc[((n >> WIDTH_17) as u8 & U8_MASK_BOT_6) as usize]);
125 write(end.add( 3), enc[((n >> WIDTH_16) as u8 & U8_MASK_BOT_6) as usize]);
126 write(end.add( 4), enc[((n >> WIDTH_15) as u8 & U8_MASK_BOT_6) as usize]);
127 write(end.add( 5), enc[((n >> WIDTH_14) as u8 & U8_MASK_BOT_6) as usize]);
128 write(end.add( 6), enc[((n >> WIDTH_13) as u8 & U8_MASK_BOT_6) as usize]);
129 write(end.add( 7), enc[((n >> WIDTH_12) as u8 & U8_MASK_BOT_6) as usize]);
130 write(end.add( 8), enc[((n >> WIDTH_11) as u8 & U8_MASK_BOT_6) as usize]);
131 write(end.add( 9), enc[((n >> WIDTH_10) as u8 & U8_MASK_BOT_6) as usize]);
132 write(end.add(10), enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
133 write(end.add(11), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
134 write(end.add(12), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
135 write(end.add(13), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
136 write(end.add(14), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
137 write(end.add(15), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
138 write(end.add(16), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
139 write(end.add(17), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
140 write(end.add(18), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
141 write(end.add(19), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
142
143 b.set_len(new_len);
144 }
145
146 19 => unsafe {
147 let end = b.as_mut_ptr().add(len);
148
149 write(end , enc[((n >> WIDTH_18) as u8 & U8_MASK_BOT_6) as usize]);
150 write(end.add( 1), enc[((n >> WIDTH_17) as u8 & U8_MASK_BOT_6) as usize]);
151 write(end.add( 2), enc[((n >> WIDTH_16) as u8 & U8_MASK_BOT_6) as usize]);
152 write(end.add( 3), enc[((n >> WIDTH_15) as u8 & U8_MASK_BOT_6) as usize]);
153 write(end.add( 4), enc[((n >> WIDTH_14) as u8 & U8_MASK_BOT_6) as usize]);
154 write(end.add( 5), enc[((n >> WIDTH_13) as u8 & U8_MASK_BOT_6) as usize]);
155 write(end.add( 6), enc[((n >> WIDTH_12) as u8 & U8_MASK_BOT_6) as usize]);
156 write(end.add( 7), enc[((n >> WIDTH_11) as u8 & U8_MASK_BOT_6) as usize]);
157 write(end.add( 8), enc[((n >> WIDTH_10) as u8 & U8_MASK_BOT_6) as usize]);
158 write(end.add( 9), enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
159 write(end.add(10), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
160 write(end.add(11), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
161 write(end.add(12), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
162 write(end.add(13), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
163 write(end.add(14), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
164 write(end.add(15), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
165 write(end.add(16), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
166 write(end.add(17), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
167 write(end.add(18), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
168
169 b.set_len(new_len);
170 }
171
172 18 => unsafe {
173 let end = b.as_mut_ptr().add(len);
174
175 write(end , enc[((n >> WIDTH_17) as u8 & U8_MASK_BOT_6) as usize]);
176 write(end.add( 1), enc[((n >> WIDTH_16) as u8 & U8_MASK_BOT_6) as usize]);
177 write(end.add( 2), enc[((n >> WIDTH_15) as u8 & U8_MASK_BOT_6) as usize]);
178 write(end.add( 3), enc[((n >> WIDTH_14) as u8 & U8_MASK_BOT_6) as usize]);
179 write(end.add( 4), enc[((n >> WIDTH_13) as u8 & U8_MASK_BOT_6) as usize]);
180 write(end.add( 5), enc[((n >> WIDTH_12) as u8 & U8_MASK_BOT_6) as usize]);
181 write(end.add( 6), enc[((n >> WIDTH_11) as u8 & U8_MASK_BOT_6) as usize]);
182 write(end.add( 7), enc[((n >> WIDTH_10) as u8 & U8_MASK_BOT_6) as usize]);
183 write(end.add( 8), enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
184 write(end.add( 9), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
185 write(end.add(10), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
186 write(end.add(11), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
187 write(end.add(12), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
188 write(end.add(13), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
189 write(end.add(14), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
190 write(end.add(15), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
191 write(end.add(16), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
192 write(end.add(17), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
193
194 b.set_len(new_len);
195 }
196
197 17 => unsafe {
198 let end = b.as_mut_ptr().add(len);
199
200 write(end , enc[((n >> WIDTH_16) as u8 & U8_MASK_BOT_6) as usize]);
201 write(end.add( 1), enc[((n >> WIDTH_15) as u8 & U8_MASK_BOT_6) as usize]);
202 write(end.add( 2), enc[((n >> WIDTH_14) as u8 & U8_MASK_BOT_6) as usize]);
203 write(end.add( 3), enc[((n >> WIDTH_13) as u8 & U8_MASK_BOT_6) as usize]);
204 write(end.add( 4), enc[((n >> WIDTH_12) as u8 & U8_MASK_BOT_6) as usize]);
205 write(end.add( 5), enc[((n >> WIDTH_11) as u8 & U8_MASK_BOT_6) as usize]);
206 write(end.add( 6), enc[((n >> WIDTH_10) as u8 & U8_MASK_BOT_6) as usize]);
207 write(end.add( 7), enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
208 write(end.add( 8), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
209 write(end.add( 9), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
210 write(end.add(10), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
211 write(end.add(11), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
212 write(end.add(12), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
213 write(end.add(13), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
214 write(end.add(14), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
215 write(end.add(15), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
216 write(end.add(16), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
217
218 b.set_len(new_len);
219 }
220
221 16 => unsafe {
222 let end = b.as_mut_ptr().add(len);
223
224 write(end , enc[((n >> WIDTH_15) as u8 & U8_MASK_BOT_6) as usize]);
225 write(end.add( 1), enc[((n >> WIDTH_14) as u8 & U8_MASK_BOT_6) as usize]);
226 write(end.add( 2), enc[((n >> WIDTH_13) as u8 & U8_MASK_BOT_6) as usize]);
227 write(end.add( 3), enc[((n >> WIDTH_12) as u8 & U8_MASK_BOT_6) as usize]);
228 write(end.add( 4), enc[((n >> WIDTH_11) as u8 & U8_MASK_BOT_6) as usize]);
229 write(end.add( 5), enc[((n >> WIDTH_10) as u8 & U8_MASK_BOT_6) as usize]);
230 write(end.add( 6), enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
231 write(end.add( 7), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
232 write(end.add( 8), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
233 write(end.add( 9), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
234 write(end.add(10), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
235 write(end.add(11), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
236 write(end.add(12), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
237 write(end.add(13), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
238 write(end.add(14), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
239 write(end.add(15), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
240
241 b.set_len(new_len);
242 }
243
244 15 => unsafe {
245 let end = b.as_mut_ptr().add(len);
246
247 write(end , enc[((n >> WIDTH_14) as u8 & U8_MASK_BOT_6) as usize]);
248 write(end.add( 1), enc[((n >> WIDTH_13) as u8 & U8_MASK_BOT_6) as usize]);
249 write(end.add( 2), enc[((n >> WIDTH_12) as u8 & U8_MASK_BOT_6) as usize]);
250 write(end.add( 3), enc[((n >> WIDTH_11) as u8 & U8_MASK_BOT_6) as usize]);
251 write(end.add( 4), enc[((n >> WIDTH_10) as u8 & U8_MASK_BOT_6) as usize]);
252 write(end.add( 5), enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
253 write(end.add( 6), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
254 write(end.add( 7), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
255 write(end.add( 8), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
256 write(end.add( 9), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
257 write(end.add(10), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
258 write(end.add(11), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
259 write(end.add(12), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
260 write(end.add(13), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
261 write(end.add(14), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
262
263 b.set_len(new_len);
264 }
265
266 14 => unsafe {
267 let end = b.as_mut_ptr().add(len);
268
269 write(end , enc[((n >> WIDTH_13) as u8 & U8_MASK_BOT_6) as usize]);
270 write(end.add( 1), enc[((n >> WIDTH_12) as u8 & U8_MASK_BOT_6) as usize]);
271 write(end.add( 2), enc[((n >> WIDTH_11) as u8 & U8_MASK_BOT_6) as usize]);
272 write(end.add( 3), enc[((n >> WIDTH_10) as u8 & U8_MASK_BOT_6) as usize]);
273 write(end.add( 4), enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
274 write(end.add( 5), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
275 write(end.add( 6), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
276 write(end.add( 7), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
277 write(end.add( 8), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
278 write(end.add( 9), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
279 write(end.add(10), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
280 write(end.add(11), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
281 write(end.add(12), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
282 write(end.add(13), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
283
284 b.set_len(new_len);
285 }
286
287 13 => unsafe {
288 let end = b.as_mut_ptr().add(len);
289
290 write(end , enc[((n >> WIDTH_12) as u8 & U8_MASK_BOT_6) as usize]);
291 write(end.add( 1), enc[((n >> WIDTH_11) as u8 & U8_MASK_BOT_6) as usize]);
292 write(end.add( 2), enc[((n >> WIDTH_10) as u8 & U8_MASK_BOT_6) as usize]);
293 write(end.add( 3), enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
294 write(end.add( 4), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
295 write(end.add( 5), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
296 write(end.add( 6), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
297 write(end.add( 7), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
298 write(end.add( 8), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
299 write(end.add( 9), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
300 write(end.add(10), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
301 write(end.add(11), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
302 write(end.add(12), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
303
304 b.set_len(new_len);
305 }
306
307 12 => unsafe {
308 let end = b.as_mut_ptr().add(len);
309
310 write(end , enc[((n >> WIDTH_11) as u8 & U8_MASK_BOT_6) as usize]);
311 write(end.add( 1), enc[((n >> WIDTH_10) as u8 & U8_MASK_BOT_6) as usize]);
312 write(end.add( 2), enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
313 write(end.add( 3), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
314 write(end.add( 4), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
315 write(end.add( 5), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
316 write(end.add( 6), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
317 write(end.add( 7), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
318 write(end.add( 8), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
319 write(end.add( 9), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
320 write(end.add(10), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
321 write(end.add(11), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
322
323 b.set_len(new_len);
324 }
325
326 11 => unsafe {
327 let end = b.as_mut_ptr().add(len);
328
329 write(end , enc[((n >> WIDTH_10) as u8 & U8_MASK_BOT_6) as usize]);
330 write(end.add( 1), enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
331 write(end.add( 2), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
332 write(end.add( 3), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
333 write(end.add( 4), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
334 write(end.add( 5), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
335 write(end.add( 6), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
336 write(end.add( 7), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
337 write(end.add( 8), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
338 write(end.add( 9), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
339 write(end.add(10), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
340
341 b.set_len(new_len);
342 }
343
344 10 => unsafe {
345 let end = b.as_mut_ptr().add(len);
346
347 write(end , enc[((n >> WIDTH_9) as u8 & U8_MASK_BOT_6) as usize]);
348 write(end.add( 1), enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
349 write(end.add( 2), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
350 write(end.add( 3), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
351 write(end.add( 4), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
352 write(end.add( 5), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
353 write(end.add( 6), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
354 write(end.add( 7), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
355 write(end.add( 8), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
356 write(end.add( 9), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
357
358 b.set_len(new_len);
359 }
360
361 9 => unsafe {
362 let end = b.as_mut_ptr().add(len);
363
364 write(end , enc[((n >> WIDTH_8) as u8 & U8_MASK_BOT_6) as usize]);
365 write(end.add( 1), enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
366 write(end.add( 2), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
367 write(end.add( 3), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
368 write(end.add( 4), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
369 write(end.add( 5), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
370 write(end.add( 6), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
371 write(end.add( 7), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
372 write(end.add( 8), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
373
374 b.set_len(new_len);
375 }
376
377 8 => unsafe {
378 let end = b.as_mut_ptr().add(len);
379
380 write(end , enc[((n >> WIDTH_7) as u8 & U8_MASK_BOT_6) as usize]);
381 write(end.add( 1), enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
382 write(end.add( 2), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
383 write(end.add( 3), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
384 write(end.add( 4), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
385 write(end.add( 5), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
386 write(end.add( 6), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
387 write(end.add( 7), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
388
389 b.set_len(new_len);
390 }
391
392 7 => unsafe {
393 let end = b.as_mut_ptr().add(len);
394
395 write(end , enc[((n >> WIDTH_6) as u8 & U8_MASK_BOT_6) as usize]);
396 write(end.add( 1), enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
397 write(end.add( 2), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
398 write(end.add( 3), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
399 write(end.add( 4), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
400 write(end.add( 5), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
401 write(end.add( 6), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
402
403 b.set_len(new_len);
404 }
405
406 6 => unsafe {
407 let end = b.as_mut_ptr().add(len);
408
409 write(end , enc[((n >> WIDTH_5) as u8 & U8_MASK_BOT_6) as usize]);
410 write(end.add( 1), enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
411 write(end.add( 2), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
412 write(end.add( 3), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
413 write(end.add( 4), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
414 write(end.add( 5), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
415
416 b.set_len(new_len);
417 }
418
419 5 => unsafe {
420 let end = b.as_mut_ptr().add(len);
421
422 write(end , enc[((n >> WIDTH_4) as u8 & U8_MASK_BOT_6) as usize]);
423 write(end.add( 1), enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
424 write(end.add( 2), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
425 write(end.add( 3), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
426 write(end.add( 4), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
427
428 b.set_len(new_len);
429 }
430
431 4 => unsafe {
432 let end = b.as_mut_ptr().add(len);
433
434 write(end , enc[((n >> WIDTH_3) as u8 & U8_MASK_BOT_6) as usize]);
435 write(end.add( 1), enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
436 write(end.add( 2), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
437 write(end.add( 3), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
438
439 b.set_len(new_len);
440 }
441
442 3 => unsafe {
443 let end = b.as_mut_ptr().add(len);
444
445 write(end , enc[((n >> WIDTH_2) as u8 & U8_MASK_BOT_6) as usize]);
446 write(end.add( 1), enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
447 write(end.add( 2), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
448
449 b.set_len(new_len);
450 }
451
452 2 => unsafe {
453 let end = b.as_mut_ptr().add(len);
454
455 write(end , enc[((n >> WIDTH_1) as u8 & U8_MASK_BOT_6) as usize]);
456 write(end.add( 1), enc[( n as u8 & U8_MASK_BOT_6) as usize]);
457
458 b.set_len(new_len);
459 }
460
461 1 => unsafe {
462 let end = b.as_mut_ptr();
463
464 write(end , enc[( n as u8 & U8_MASK_BOT_6) as usize]);
465
466 b.set_len(new_len);
467 }
468
469 _ => panic!("Inconceivable! Impossible length for u128")
470 }
471}