Crate bintext

Crate bintext 

Source
Expand description

Binary text encoding and decoding with support for SIMD (AVX2 and SSSE3) with good fallback performance.

The main idea of this crate is to have a zero copy binary deserialization for text formats.

§How it works

Alignment can’t be guaranteed in a text format, so no matter what the data will need to be re-aligned while decoding, if the required alignment is N maximum amount of offset need to move the bytes is less than N thus by providing an start padding in the binary encoded text of N - 1 it’s possible to align the data up to N.

Quick note this crate will only accept padding equal or grater than N, because it’s a bit cheap to do this way.

// Padding of 8 (suppose it was read form a file)
let mut hex = "--------a1f7d5e8d14f0f76".to_string();

unsafe {
    // Decode with padding of 8 and alignment of 8
    let slice = bintext::hex::decode_aligned(&mut hex, 8, 8).unwrap();
    // Data is aligned so you can safely do this:
    let slice: &[u64] = std::slice::from_raw_parts(
       slice.as_ptr() as *const _,
       slice.len() / std::mem::size_of::<u64>()
    );
}

Modules§

hex
Hex encoding and decoding