@@ -31,7 +31,6 @@ pub(crate) fn read_bytes<'a>(
3131 Ok ( bytes)
3232}
3333
34- #[ inline]
3534pub ( crate ) fn read_control ( buffer : & [ u8 ] , offset : & mut usize ) -> Result < ( u8 , usize ) , Error > {
3635 let control_byte = buffer[ * offset] ;
3736 * offset += 1 ;
@@ -236,116 +235,14 @@ pub(crate) fn read_array<'a>(buffer: &'a [u8], offset: &mut usize) -> Result<Vec
236235}
237236
238237pub ( crate ) fn bytes_to_usize ( buffer : & [ u8 ] ) -> usize {
239- match buffer. len ( ) {
240- 1 => buffer[ 0 ] as usize ,
241- 2 => ( buffer[ 0 ] as usize ) << 8 | ( buffer[ 1 ] as usize ) ,
242- 3 => ( ( buffer[ 0 ] as usize ) << 8 | ( buffer[ 1 ] as usize ) ) << 8 | ( buffer[ 2 ] as usize ) ,
243- 4 => {
244- ( ( ( buffer[ 0 ] as usize ) << 8 | ( buffer[ 1 ] as usize ) ) << 8 | ( buffer[ 2 ] as usize ) ) << 8
245- | ( buffer[ 3 ] as usize )
246- }
247- 5 => {
248- ( ( ( ( buffer[ 0 ] as usize ) << 8 | ( buffer[ 1 ] as usize ) ) << 8 | ( buffer[ 2 ] as usize ) ) << 8
249- | ( buffer[ 3 ] as usize ) )
250- << 8
251- | ( buffer[ 4 ] as usize )
252- }
253- 6 => {
254- ( ( ( ( ( buffer[ 0 ] as usize ) << 8 | ( buffer[ 1 ] as usize ) ) << 8 | ( buffer[ 2 ] as usize ) )
255- << 8
256- | ( buffer[ 3 ] as usize ) )
257- << 8
258- | ( buffer[ 4 ] as usize ) )
259- << 8
260- | ( buffer[ 5 ] as usize )
261- }
262- 7 => {
263- ( ( ( ( ( ( buffer[ 0 ] as usize ) << 8 | ( buffer[ 1 ] as usize ) ) << 8 | ( buffer[ 2 ] as usize ) )
264- << 8
265- | ( buffer[ 3 ] as usize ) )
266- << 8
267- | ( buffer[ 4 ] as usize ) )
268- << 8
269- | ( buffer[ 5 ] as usize ) )
270- << 8
271- | ( buffer[ 6 ] as usize )
272- }
273- 8 => {
274- ( ( ( ( ( ( ( buffer[ 0 ] as usize ) << 8 | ( buffer[ 1 ] as usize ) ) << 8 | ( buffer[ 2 ] as usize ) )
275- << 8
276- | ( buffer[ 3 ] as usize ) )
277- << 8
278- | ( buffer[ 4 ] as usize ) )
279- << 8
280- | ( buffer[ 5 ] as usize ) )
281- << 8
282- | ( buffer[ 6 ] as usize ) )
283- << 8
284- | ( buffer[ 7 ] as usize )
285- }
286- _ => 0 ,
238+ if buffer. len ( ) > 8 {
239+ return 0 ;
287240 }
241+ buffer
242+ . iter ( )
243+ . fold ( 0usize , |acc, & b| ( acc << 8 ) | ( b as usize ) )
288244}
289245
290246fn bytes_to_usize_with_prefix ( prefix : usize , buffer : & [ u8 ] ) -> usize {
291- match buffer. len ( ) {
292- 0 => prefix,
293- 1 => prefix << 8 | ( buffer[ 0 ] as usize ) ,
294- 2 => ( prefix << 8 | ( buffer[ 0 ] as usize ) ) << 8 | ( buffer[ 1 ] as usize ) ,
295- 3 => {
296- ( ( prefix << 8 | ( buffer[ 0 ] as usize ) ) << 8 | ( buffer[ 1 ] as usize ) ) << 8
297- | ( buffer[ 2 ] as usize )
298- }
299- 4 => {
300- ( ( ( prefix << 8 | ( buffer[ 0 ] as usize ) ) << 8 | ( buffer[ 1 ] as usize ) ) << 8
301- | ( buffer[ 2 ] as usize ) )
302- << 8
303- | ( buffer[ 3 ] as usize )
304- }
305- 5 => {
306- ( ( ( ( prefix << 8 | ( buffer[ 0 ] as usize ) ) << 8 | ( buffer[ 1 ] as usize ) ) << 8
307- | ( buffer[ 2 ] as usize ) )
308- << 8
309- | ( buffer[ 3 ] as usize ) )
310- << 8
311- | ( buffer[ 4 ] as usize )
312- }
313- 6 => {
314- ( ( ( ( ( prefix << 8 | ( buffer[ 0 ] as usize ) ) << 8 | ( buffer[ 1 ] as usize ) ) << 8
315- | ( buffer[ 2 ] as usize ) )
316- << 8
317- | ( buffer[ 3 ] as usize ) )
318- << 8
319- | ( buffer[ 4 ] as usize ) )
320- << 8
321- | ( buffer[ 5 ] as usize )
322- }
323- 7 => {
324- ( ( ( ( ( ( prefix << 8 | ( buffer[ 0 ] as usize ) ) << 8 | ( buffer[ 1 ] as usize ) ) << 8
325- | ( buffer[ 2 ] as usize ) )
326- << 8
327- | ( buffer[ 3 ] as usize ) )
328- << 8
329- | ( buffer[ 4 ] as usize ) )
330- << 8
331- | ( buffer[ 5 ] as usize ) )
332- << 8
333- | ( buffer[ 6 ] as usize )
334- }
335- 8 => {
336- ( ( ( ( ( ( ( prefix << 8 | ( buffer[ 0 ] as usize ) ) << 8 | ( buffer[ 1 ] as usize ) ) << 8
337- | ( buffer[ 2 ] as usize ) )
338- << 8
339- | ( buffer[ 3 ] as usize ) )
340- << 8
341- | ( buffer[ 4 ] as usize ) )
342- << 8
343- | ( buffer[ 5 ] as usize ) )
344- << 8
345- | ( buffer[ 6 ] as usize ) )
346- << 8
347- | ( buffer[ 7 ] as usize )
348- }
349- _ => 0 ,
350- }
247+ ( prefix << ( buffer. len ( ) * 8 ) ) | bytes_to_usize ( buffer)
351248}
0 commit comments