Trait bitpacking::BitPacker
[−]
[src]
pub trait BitPacker {
type DataType;
const BLOCK_LEN: usize;
fn compress(decompressed: &[u32], compressed: &mut [u8], num_bits: u8);
fn compress_sorted(
initial: u32,
decompressed: &[u32],
compressed: &mut [u8],
num_bits: u8
);
fn decompress_to<Output: FnMut(Self::DataType)>(
compressed: &[u8],
output: Output,
num_bits: u8
);
fn decompress(compressed: &[u8], decompressed: &mut [u32], num_bits: u8);
fn decompress_sorted(
initial: u32,
compressed: &[u8],
decompressed: &mut [u32],
num_bits: u8
);
fn num_bits(decompressed: &[u32]) -> u8;
fn num_bits_sorted(initial: u32, decompressed: &[u32]) -> u8;
}Example
extern crate bitpacking; use bitpacking::{SSE3BitPacker, BitPacker}; let fake_data = vec![7, 7, 7, 7, 11, 10, 15, 13, 6, 5, 3, 14, 5, 7, 15, 12, 1, 10, 8, 10, 12, 14, 13, 1, 10, 1, 1, 10, 4, 15, 12, 1, 2, 0, 8, 5, 14, 5, 2, 4, 1, 6, 14, 13, 5, 10, 10, 1, 6, 4, 1, 12, 1, 1, 5, 15, 15, 2, 8, 6, 4, 3, 10, 8, 8, 9, 2, 6, 10, 5, 7, 9, 0, 13, 15, 5, 13, 10, 0, 2, 10, 14, 5, 9, 12, 8, 5, 10, 8, 8, 10, 5, 13, 8, 11, 14, 7, 14, 4, 2, 9, 12, 14, 5, 15, 12, 0, 12, 13, 3, 13, 5, 4, 15, 9, 8, 9, 3, 3, 3, 1, 12, 0, 6, 11, 11, 12, 4]; let num_bits: u8 = SSE3BitPacker::num_bits(&fake_data); let mut compressed = vec![0u8; (num_bits as usize) * SSE3BitPacker::BLOCK_LEN / 8]; SSE3BitPacker::compress(&fake_data, &mut compressed[..], num_bits); // Decompressing let mut decompressed = vec![0u32; SSE3BitPacker::BLOCK_LEN]; SSE3BitPacker::decompress(&compressed, &mut decompressed[..], num_bits); assert_eq!(&fake_data, &decompressed);
Associated Types
type DataType
Associated Constants
Required Methods
fn compress(decompressed: &[u32], compressed: &mut [u8], num_bits: u8)
fn compress_sorted(
initial: u32,
decompressed: &[u32],
compressed: &mut [u8],
num_bits: u8
)
initial: u32,
decompressed: &[u32],
compressed: &mut [u8],
num_bits: u8
)
fn decompress_to<Output: FnMut(Self::DataType)>(
compressed: &[u8],
output: Output,
num_bits: u8
)
compressed: &[u8],
output: Output,
num_bits: u8
)
fn decompress(compressed: &[u8], decompressed: &mut [u32], num_bits: u8)
fn decompress_sorted(
initial: u32,
compressed: &[u8],
decompressed: &mut [u32],
num_bits: u8
)
initial: u32,
compressed: &[u8],
decompressed: &mut [u32],
num_bits: u8
)
fn num_bits(decompressed: &[u32]) -> u8
fn num_bits_sorted(initial: u32, decompressed: &[u32]) -> u8
Implementors
impl BitPacker for ScalarBitPacker type DataType = u32;impl BitPacker for SSE3BitPacker type DataType = DataType;