@@ -192,7 +192,7 @@ impl MmapBitVec {
192
192
io:: ErrorKind :: InvalidData ,
193
193
format ! (
194
194
"file should be {} bytes (with {} header), but file is {} bytes" ,
195
- byte_size + total_header_size as u64 ,
195
+ byte_size + total_header_size,
196
196
total_header_size,
197
197
file. metadata( ) ?. len( ) ,
198
198
) ,
@@ -282,9 +282,9 @@ impl MmapBitVec {
282
282
if r. end > self . size {
283
283
panic ! ( "Range ends outside of BitVec" )
284
284
}
285
- let byte_idx_st = ( r. start >> 3 ) as usize ;
286
- let byte_idx_en = ( ( r. end - 1 ) >> 3 ) as usize ;
287
- let new_size: usize = ( ( ( r. end - r. start ) as usize - 1 ) >> 3 ) + 1 ;
285
+ let byte_idx_st = r. start >> 3 ;
286
+ let byte_idx_en = ( r. end - 1 ) >> 3 ;
287
+ let new_size: usize = ( ( ( r. end - r. start ) - 1 ) >> 3 ) + 1 ;
288
288
289
289
let ptr: * const u8 = self . mmap . as_ptr ( ) ;
290
290
let mut v = vec ! [ 0 ; new_size] ;
@@ -333,7 +333,7 @@ impl MmapBitVec {
333
333
} else {
334
334
0
335
335
} ;
336
- let byte_idx_en = ( ( r. end - 1 ) >> 3 ) as usize ;
336
+ let byte_idx_en = ( r. end - 1 ) >> 3 ;
337
337
338
338
let mmap: * mut u8 = self
339
339
. mmap
@@ -406,8 +406,8 @@ impl BitVector for MmapBitVec {
406
406
407
407
/// Return the number of set bits in the range `r`
408
408
fn rank ( & self , r : Range < usize > ) -> usize {
409
- let byte_idx_st = ( r. start >> 3 ) as usize ;
410
- let byte_idx_en = ( ( r. end - 1 ) >> 3 ) as usize ;
409
+ let byte_idx_st = r. start >> 3 ;
410
+ let byte_idx_en = ( r. end - 1 ) >> 3 ;
411
411
let mmap: * const u8 = self . mmap . as_ptr ( ) ;
412
412
413
413
let mut bit_count = 0usize ;
@@ -452,7 +452,7 @@ impl BitVector for MmapBitVec {
452
452
453
453
/// Return the position of the `nth` set bit with `start` treated as the 0th position, or `None` if there is no set bit
454
454
fn select ( & self , n : usize , start : usize ) -> Option < usize > {
455
- let byte_idx_st = ( start >> 3 ) as usize ;
455
+ let byte_idx_st = start >> 3 ;
456
456
let size_front = 8u8 - ( start & 7 ) as u8 ;
457
457
let mmap: * const u8 = self . mmap . as_ptr ( ) ;
458
458
@@ -494,8 +494,8 @@ impl BitVector for MmapBitVec {
494
494
} else if r. end > self . size {
495
495
panic ! ( "Range ends outside of BitVec" )
496
496
}
497
- let byte_idx_st = ( r. start >> 3 ) as usize ;
498
- let byte_idx_en = ( ( r. end - 1 ) >> 3 ) as usize ;
497
+ let byte_idx_st = r. start >> 3 ;
498
+ let byte_idx_en = ( r. end - 1 ) >> 3 ;
499
499
let new_size: u8 = ( r. end - r. start ) as u8 ;
500
500
501
501
let mut v;
@@ -513,7 +513,7 @@ impl BitVector for MmapBitVec {
513
513
// we have to transmute since we don't know if it's a u64 or u128
514
514
#[ allow( clippy:: transmute_ptr_to_ptr) ]
515
515
let lg_ptr: * const u128 = transmute ( ptr. add ( byte_idx_st) ) ;
516
- v |= ( * lg_ptr) . to_be ( ) << ( r. start & 7 ) >> ( 128 - new_size) ;
516
+ v |= lg_ptr. read_unaligned ( ) . to_be ( ) << ( r. start & 7 ) >> ( 128 - new_size) ;
517
517
}
518
518
} else {
519
519
// special case if we can't get a whole u64 out without running outside the buffer
@@ -526,7 +526,7 @@ impl BitVector for MmapBitVec {
526
526
}
527
527
528
528
// mask out the high bits in case we copied extra
529
- v & ( u128:: max_value ( ) >> ( 128 - new_size) )
529
+ v & ( u128:: MAX >> ( 128 - new_size) )
530
530
}
531
531
532
532
/// Set an unaligned range of bits using a `u64`.
@@ -542,8 +542,8 @@ impl BitVector for MmapBitVec {
542
542
if r. end > self . size {
543
543
panic ! ( "Range ends outside of BitVec" )
544
544
}
545
- let byte_idx_st = ( r. start >> 3 ) as usize ;
546
- let byte_idx_en = ( ( r. end - 1 ) >> 3 ) as usize ;
545
+ let byte_idx_st = r. start >> 3 ;
546
+ let byte_idx_en = ( r. end - 1 ) >> 3 ;
547
547
let new_size: u8 = ( r. end - r. start ) as u8 ;
548
548
549
549
// split off the front byte
@@ -602,8 +602,8 @@ impl BitVector for MmapBitVec {
602
602
if ( r. end - 1 ) > self . size {
603
603
panic ! ( "Range ends outside of BitVec" )
604
604
}
605
- let byte_idx_st = ( r. start >> 3 ) as usize ;
606
- let byte_idx_en = ( ( r. end - 1 ) >> 3 ) as usize ;
605
+ let byte_idx_st = r. start >> 3 ;
606
+ let byte_idx_en = ( r. end - 1 ) >> 3 ;
607
607
608
608
let mmap: * mut u8 = self
609
609
. mmap
@@ -701,7 +701,7 @@ mod test {
701
701
702
702
#[ test]
703
703
fn test_bitvec_get_range ( ) {
704
- let mut b = MmapBitVec :: from_memory ( 128 ) . unwrap ( ) ;
704
+ let mut b = MmapBitVec :: from_memory ( 1024 ) . unwrap ( ) ;
705
705
b. set ( 2 , true ) ;
706
706
b. set ( 3 , true ) ;
707
707
b. set ( 5 , true ) ;
0 commit comments