@@ -437,7 +437,7 @@ impl FixedBitSet {
437437 Masks :: new ( range, self . length )
438438 . map ( |( block, mask) | {
439439 // SAFETY: Masks cannot return a block index that is out of range.
440- let value = unsafe { * self . get_unchecked ( block) } ;
440+ let value = unsafe { * self . data . get_unchecked ( block) } ;
441441 ( value & mask) . count_ones ( ) as usize
442442 } )
443443 . sum ( )
@@ -452,7 +452,7 @@ impl FixedBitSet {
452452 pub fn set_range < T : IndexRange > ( & mut self , range : T , enabled : bool ) {
453453 for ( block, mask) in Masks :: new ( range, self . length ) {
454454 // SAFETY: Masks cannot return a block index that is out of range.
455- let block = unsafe { self . get_unchecked_mut ( block) } ;
455+ let block = unsafe { self . data . get_unchecked_mut ( block) } ;
456456 if enabled {
457457 * block |= mask;
458458 } else {
@@ -480,7 +480,7 @@ impl FixedBitSet {
480480 pub fn toggle_range < T : IndexRange > ( & mut self , range : T ) {
481481 for ( block, mask) in Masks :: new ( range, self . length ) {
482482 // SAFETY: Masks cannot return a block index that is out of range.
483- let block = unsafe { self . get_unchecked_mut ( block) } ;
483+ let block = unsafe { self . data . get_unchecked_mut ( block) } ;
484484 * block ^= mask;
485485 }
486486 }
@@ -870,9 +870,9 @@ impl<'a> FusedIterator for Union<'a> {}
870870
871871struct Masks {
872872 first_block : usize ,
873- first_mask : usize ,
873+ first_mask : Block ,
874874 last_block : usize ,
875- last_mask : usize ,
875+ last_mask : Block ,
876876}
877877
878878impl Masks {
@@ -888,33 +888,32 @@ impl Masks {
888888 length
889889 ) ;
890890
891- let ( first_block, first_rem) = div_rem ( start, BITS ) ;
892- let ( last_block, last_rem) = div_rem ( end, BITS ) ;
891+ let ( first_block, first_rem) = div_rem ( start, Block :: BITS ) ;
892+ let ( last_block, last_rem) = div_rem ( end, Block :: BITS ) ;
893893
894894 Masks {
895895 first_block,
896- first_mask : usize :: max_value ( ) << first_rem,
896+ first_mask : Block :: upper_mask ( first_rem) ,
897897 last_block,
898- last_mask : ( usize:: max_value ( ) >> 1 ) >> ( BITS - last_rem - 1 ) ,
899- // this is equivalent to `MAX >> (BITS - x)` with correct semantics when x == 0.
898+ last_mask : Block :: lower_mask ( last_rem) ,
900899 }
901900 }
902901}
903902
904903impl Iterator for Masks {
905- type Item = ( usize , usize ) ;
904+ type Item = ( usize , Block ) ;
906905 #[ inline]
907906 fn next ( & mut self ) -> Option < Self :: Item > {
908907 match self . first_block . cmp ( & self . last_block ) {
909908 Ordering :: Less => {
910909 let res = ( self . first_block , self . first_mask ) ;
911910 self . first_block += 1 ;
912- self . first_mask = ! 0 ;
911+ self . first_mask = Block :: ALL ;
913912 Some ( res)
914913 }
915914 Ordering :: Equal => {
916915 let mask = self . first_mask & self . last_mask ;
917- let res = if mask == 0 {
916+ let res = if mask. is_empty ( ) {
918917 None
919918 } else {
920919 Some ( ( self . first_block , mask) )
0 commit comments