Succinct Data Structures for Rust
So far we have:
- bit vectors and bit buffer;
- integer vectors with arbitrary-sized (1- to 64-bit) elements;
- a variety of universal codes;
- constant-time rank queries; and
- O(lg lg n)-time select queries based on binary search over ranks.
Usage
It’s on crates.io, so you can add
[]
= "0.5.2"
to your Cargo.toml.
Credits
-
IntVecborrows some implementation techniques fromnbitsvec. The main difference is thatnbitsvecuses atypenumto put the element size (in bits) as a parameter to the vector type. Also,nbitsvecis likely to be faster. -
Some of the API is inspired by SDSL, a C++ succinct data structures library. It’s much more complete than
succinct, and probably more correct and faster too.