diff --git a/roaring/src/bitmap/store/bitmap_store.rs b/roaring/src/bitmap/store/bitmap_store.rs index a60f3a1a..ceaeb5c2 100644 --- a/roaring/src/bitmap/store/bitmap_store.rs +++ b/roaring/src/bitmap/store/bitmap_store.rs @@ -403,9 +403,9 @@ impl Display for Error { impl std::error::Error for Error {} pub struct BitmapIter> { - key: usize, + key: u16, value: u64, - key_back: usize, + key_back: u16, value_back: u64, bits: B, } @@ -415,7 +415,7 @@ impl> BitmapIter { BitmapIter { key: 0, value: bits.borrow()[0], - key_back: BITMAP_LENGTH - 1, + key_back: BITMAP_LENGTH as u16 - 1, value_back: bits.borrow()[BITMAP_LENGTH - 1], bits, } @@ -432,7 +432,7 @@ impl> Iterator for BitmapIter { return None; } for key in self.key + 1..self.key_back { - self.value = unsafe { *self.bits.borrow().get_unchecked(key) }; + self.value = unsafe { *self.bits.borrow().get_unchecked(key as usize) }; if self.value != 0 { self.key = key; break 'get_val; @@ -445,9 +445,9 @@ impl> Iterator for BitmapIter { } } } - let index = self.value.trailing_zeros() as usize; + let index = self.value.trailing_zeros() as u16; self.value &= self.value - 1; - Some((64 * self.key + index) as u16) + Some(64 * self.key + index) } } @@ -461,13 +461,14 @@ impl> DoubleEndedIterator for BitmapIter { return None; } self.key_back -= 1; - self.value_back = unsafe { *self.bits.borrow().get_unchecked(self.key_back) }; + self.value_back = + unsafe { *self.bits.borrow().get_unchecked(self.key_back as usize) }; continue; } - let index_from_left = value.leading_zeros() as usize; + let index_from_left = value.leading_zeros() as u16; let index = 63 - index_from_left; *value &= !(1 << index); - return Some((64 * self.key_back + index) as u16); + return Some(64 * self.key_back + index); } } }