@@ -47,6 +47,7 @@ macro_rules! bits_impl (
47
47
{
48
48
use $crate:: lib:: std:: result:: Result :: * ;
49
49
use $crate:: { Context , Err , Needed } ;
50
+ use $crate:: Slice ;
50
51
51
52
let input = ( $i, 0usize ) ;
52
53
match $submac!( input, $( $args) * ) {
@@ -76,7 +77,7 @@ macro_rules! bits_impl (
76
77
Ok ( ( ( i, bit_index) , o) ) => {
77
78
let byte_index = bit_index / 8 + if bit_index % 8 == 0 { 0 } else { 1 } ;
78
79
//println!("bit index=={} => byte index=={}", bit_index, byte_index);
79
- Ok ( ( & i [ byte_index..] , o) )
80
+ Ok ( ( i . slice ( byte_index..) , o) )
80
81
}
81
82
}
82
83
}
@@ -92,6 +93,7 @@ macro_rules! bits_impl (
92
93
{
93
94
use $crate:: lib:: std:: result:: Result :: * ;
94
95
use $crate:: { Err , Needed , Context } ;
96
+ use $crate:: Slice ;
95
97
96
98
let input = ( $i, 0usize ) ;
97
99
match $submac!( input, $( $args) * ) {
@@ -111,7 +113,7 @@ macro_rules! bits_impl (
111
113
Ok ( ( ( i, bit_index) , o) ) => {
112
114
let byte_index = bit_index / 8 + if bit_index % 8 == 0 { 0 } else { 1 } ;
113
115
//println!("bit index=={} => byte index=={}", bit_index, byte_index);
114
- Ok ( ( & i [ byte_index..] , o) )
116
+ Ok ( ( i . slice ( byte_index..) , o) )
115
117
}
116
118
}
117
119
}
@@ -278,9 +280,10 @@ macro_rules! take_bits (
278
280
279
281
use $crate:: lib:: std:: ops:: Div ;
280
282
use $crate:: lib:: std:: convert:: Into ;
283
+ use $crate:: Slice ;
281
284
//println!("taking {} bits from {:?}", $count, $i);
282
285
let ( input, bit_offset) = $i;
283
- let res : IResult <( & [ u8 ] , usize ) , $t> = if $count == 0 {
286
+ let res : IResult <_ , $t> = if $count == 0 {
284
287
Ok ( ( ( input, bit_offset) , ( 0 as u8 ) . into( ) ) )
285
288
} else {
286
289
let cnt = ( $count as usize + bit_offset) . div( 8 ) ;
@@ -313,7 +316,7 @@ macro_rules! take_bits (
313
316
offset = 0 ;
314
317
}
315
318
}
316
- Ok ( ( ( & input[ cnt..] , end_offset) , acc) )
319
+ Ok ( ( ( input. slice ( cnt..) , end_offset) , acc) )
317
320
}
318
321
} ;
319
322
res
@@ -351,7 +354,7 @@ macro_rules! tag_bits (
351
354
Err ( Err :: Incomplete ( i) ) => Err ( Err :: Incomplete ( i) ) ,
352
355
Ok ( ( i, o) ) => {
353
356
if let $p = o {
354
- let res: IResult <( & [ u8 ] , usize ) , $t> = Ok ( ( i, o) ) ;
357
+ let res: IResult <_ , $t> = Ok ( ( i, o) ) ;
355
358
res
356
359
} else {
357
360
let e: $crate:: ErrorKind <u32 > = $crate:: ErrorKind :: TagBits ;
@@ -372,6 +375,7 @@ mod tests {
372
375
use lib:: std:: ops:: { AddAssign , Shl , Shr } ;
373
376
use internal:: { Err , Needed } ;
374
377
use util:: ErrorKind ;
378
+ use types:: CompleteByteSlice ;
375
379
376
380
#[ test]
377
381
fn take_bits ( ) {
@@ -392,6 +396,7 @@ mod tests {
392
396
assert_eq ! ( take_bits!( ( sl, 6 ) , u16 , 11 ) , Ok ( ( ( & sl[ 2 ..] , 1 ) , 1504 ) ) ) ;
393
397
assert_eq ! ( take_bits!( ( sl, 0 ) , u32 , 20 ) , Ok ( ( ( & sl[ 2 ..] , 4 ) , 700_163 ) ) ) ;
394
398
assert_eq ! ( take_bits!( ( sl, 4 ) , u32 , 20 ) , Ok ( ( ( & sl[ 3 ..] , 0 ) , 716_851 ) ) ) ;
399
+ assert_eq ! ( take_bits!( ( CompleteByteSlice ( sl) , 4 ) , u32 , 20 ) , Ok ( ( ( sl[ 3 ..] . into( ) , 0 ) , 716_851 ) ) ) ;
395
400
assert_eq ! (
396
401
take_bits!( ( sl, 4 ) , u32 , 22 ) ,
397
402
Err ( Err :: Incomplete ( Needed :: Size ( 22 ) ) )
@@ -405,6 +410,7 @@ mod tests {
405
410
406
411
assert_eq ! ( tag_bits!( ( sl, 0 ) , u8 , 3 , 0b101 ) , Ok ( ( ( & sl[ 0 ..] , 3 ) , 5 ) ) ) ;
407
412
assert_eq ! ( tag_bits!( ( sl, 0 ) , u8 , 4 , 0b1010 ) , Ok ( ( ( & sl[ 0 ..] , 4 ) , 10 ) ) ) ;
413
+ assert_eq ! ( tag_bits!( ( CompleteByteSlice ( sl) , 0 ) , u8 , 4 , 0b1010 ) , Ok ( ( ( sl[ 0 ..] . into( ) , 4 ) , 10 ) ) ) ;
408
414
}
409
415
410
416
named ! ( ch<( & [ u8 ] , usize ) , ( u8 , u8 ) >,
0 commit comments