diff options
author | Paul Masurel <paul.masurel@gmail.com> | 2019-02-04 13:24:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-04 13:24:00 +0100 |
commit | 4507df925503674647a4772e235323ad6fe82afe (patch) | |
tree | d0b1d1e876f610181f5464d79e09c27b75657a86 /src/common/bitpacker.rs | |
parent | e8625548b7db44c772e7704dfbcaa64aeb43e74d (diff) |
Closes #461 (#489)
Multivalued fast field uses `u64` indexes.
Diffstat (limited to 'src/common/bitpacker.rs')
-rw-r--r-- | src/common/bitpacker.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/common/bitpacker.rs b/src/common/bitpacker.rs index 7b5204e..ca23ca8 100644 --- a/src/common/bitpacker.rs +++ b/src/common/bitpacker.rs @@ -64,7 +64,7 @@ pub struct BitUnpacker<Data> where Data: Deref<Target = [u8]>, { - num_bits: usize, + num_bits: u64, mask: u64, data: Data, } @@ -80,13 +80,13 @@ where (1u64 << num_bits) - 1u64 }; BitUnpacker { - num_bits: num_bits as usize, + num_bits: num_bits as u64, mask, data, } } - pub fn get(&self, idx: usize) -> u64 { + pub fn get(&self, idx: u64) -> u64 { if self.num_bits == 0 { return 0u64; } @@ -97,10 +97,10 @@ where let addr = addr_in_bits >> 3; let bit_shift = addr_in_bits & 7; debug_assert!( - addr + 8 <= data.len(), + addr + 8 <= data.len() as u64, "The fast field field should have been padded with 7 bytes." ); - let val_unshifted_unmasked: u64 = LittleEndian::read_u64(&data[addr..]); + let val_unshifted_unmasked: u64 = LittleEndian::read_u64(&data[(addr as usize)..]); let val_shifted = (val_unshifted_unmasked >> bit_shift) as u64; val_shifted & mask } @@ -129,7 +129,7 @@ mod test { fn test_bitpacker_util(len: usize, num_bits: u8) { let (bitunpacker, vals) = create_fastfield_bitpacker(len, num_bits); for (i, val) in vals.iter().enumerate() { - assert_eq!(bitunpacker.get(i), *val); + assert_eq!(bitunpacker.get(i as u64), *val); } } |