Crate unthbuf

Source
Expand description

§UnthBuf

The UnthBuf is a data-structure that holds a fixed buffer of unsigned integers, just like a Box<[usize]> would… except that the bit-size of the integers can be adjusted from 1 to 64 bits, effectively making it a Box<[uN]>!

For example:

use unthbuf::{UnthBuf, Bits, aligned::AlignedLayout};
let mut buf = UnthBuf::<AlignedLayout>::new(4096, Bits::new(5).unwrap());
buf.set(21, 5).unwrap();

Internally the buffer is a boxed slice of usized cells, with the integer elements being stored within the cells according to the chosen CellLayout.

This will result in a bit-pattern like this:

0101101101101101101101101101101101101101101101101101101101101101
0000000000000000000000000000000000000000000000000000000000000101
                            integer aligned to word boundary ^^^

Or, if the PackedLayout/PackedUnthBuf is used instead:

1101101101101101101101101101101101101101101101101101101101101101
^              integer packed across word boundary            vv
0000000000000000000000000000000000000000000000000000000000000010

While the PackedLayout is certainly more compact, it is also roughly ~20% slower; use it when every bit counts.

You can use the UnthBuf::get_padding_bit_count-function to determine how much space is lost.

Modules§

aligned
Layout that stores integers in groups within word boundaries.
packed
Layout that stores integers tightly packed, across word boundaries.

Structs§

UnthBuf
A structure that holds a fixed buffer of bits-sized unsigned integer elements.
UnthBufIter
Iterator over an UnthBuf

Traits§

CellLayout
The internal layout of the cells held by an UnthBuf.

Type Aliases§

AlignedUnthBuf
A UnthBuf using the aligned::AlignedLayout.
Bits
Bit-size of individual elements in an UnthBuf.
PackedUnthBuf
A UnthBuf using the packed::PackedLayout.