These structures are comparable to those in SDSL in performance and scalability. As the focus is on (relative) simplicity, ugly low-level optimizations are generally avoided.
RawVector
: A bit array that supports reading, writing, and appending 1-64 bits at a time. Implemented on top of Vec<u64>
.
RawVectorWriter
: An append-only version of RawVector
that writes the structure directly to a file.RawVectorMapper
: An immutable memory-mapped RawVector
.IntVector
: A bit-packed vector of fixed-width integers implemented on top of RawVector
. Like sdsl::int_vector
but also supports stack functionality.
IntVectorWriter
: An append-only version of IntVector
that writes the structure directly to a file. Like a subset of sdsl::int_vector_buffer
.IntVectorMapper
: An immutable memory-mapped IntVector
.WaveletMatrix
: An immutable vector of fixed-width integers. Similar to sdsl::wm_int
.
rank()
, inverse_select()
, select()
, predecessor()
, and successor()
with each item value.BitVector
for each level.BitVector
: A plain immutable bitvector.
rank()
, rank_zero()
, select()
, select_zero()
, predecessor()
, and successor()
queries using optional support structures.RawVector
.RLVector
: A run-length encoded bitvector.
rank()
, rank_zero()
, select()
, select_zero()
, predecessor()
, and successor()
queries.RLBuilder
.SparseVector
: An Elias-Fano encoded bitvector.
rank()
, rank_zero()
, select()
, select_zero()
, predecessor()
, and successor()
queries .SparseBuilder
.predecessor()
and successor()
that return values instead of iterators?.cargo/config.toml
sets the target CPU to native
.mmap()
.usize
is not 64-bit.