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 usize
d 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. - Unth
BufIter - Iterator over an
UnthBuf
Traits§
- Cell
Layout - The internal layout of the cells held by an
UnthBuf
.
Type Aliases§
- Aligned
Unth Buf - A
UnthBuf
using thealigned::AlignedLayout
. - Bits
- Bit-size of individual elements in an
UnthBuf
. - Packed
Unth Buf - A
UnthBuf
using thepacked::PackedLayout
.