MCPcopy Index your code
hub / github.com/beling/bsuccinct-rs

github.com/beling/bsuccinct-rs @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,867 symbols 4,548 edges 106 files 467 documented · 25%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Succinct data structures and other Rust libraries and programs by Piotr Beling.

Build Status License License

Included libraries: - ph (crate, doc) - minimal perfect hash functions (PHast, FMPH and FMPHGO); - csf (crate, doc) - compressed static functions (maps); - cseq (crate, doc) - compact sequences (like Elias-Fano); - minimum_redundancy (crate, doc) - encode and decode data with binary or non-binary Huffman coding; - bitm (crate, doc) - bit and bitmap manipulation; - seedable_hash (crate, doc) - seedable hashers, - binout (crate, doc) - binary encoding, decoding, serialization, deserialization; - fsum (crate, doc) - calculate accurate sum of floats; - dyn_size_of (crate, doc) - calculate memory consumed by variables, including the memory allocated on heap, - butils (crate, doc) - (internal) utilities shared by software included in BSuccinct.

Included programs: - mphf_benchmark (crate, doc) - benchmarking minimal perfect hash functions, - csf_benchmark (crate, doc) - benchmarking compressed static functions, - cseq_benchmark (crate, doc) - benchmarking compact sequences, - coding_benchmark (crate, doc) - benchmarking Huffman coding crates.

Everything is dual-licensed under Apache 2.0 or MIT.

Bibliography

When using bsuccinct for research purposes, please cite the following paper: - Piotr Beling, BSuccinct: Rust libraries and programs focused on succinct data structures, SoftwareX, Volume 26, 2024, 101681, ISSN 2352-7110, https://doi.org/10.1016/j.softx.2024.101681

Installation

Programs can be compiled and installed from sources. To do this, a Rust compiler is needed. The easiest way to obtain the compiler along with other necessary tools (like cargo) is to use rustup.

Please follow the instructions at https://www.rust-lang.org/tools/install.

Installing rust programs

Once Rust is installed, to compile and install a program from sources and with native optimizations, just execute:

RUSTFLAGS="-C target-cpu=native" cargo install <program_name>

for example

RUSTFLAGS="-C target-cpu=native" cargo install mphf_benchmark

Platforms with 32-bit addressing

For portability, BSuccinct components compile and run on platforms with 32-bit addressing (like wasm32). However, they are optimized primarily with 64-bit CPUs in mind.

Extension points exported contracts — how you extend this code

BuildSeededHasher (Interface)
Family of hash functions that allows the creation of [`Hasher`] instances initialized with a given seed. [7 implementers]
seedable_hash/src/lib.rs
GetSize (Interface)
Provides methods to get dynamic and total size of the variable. [39 implementers]
dyn_size_of/src/lib.rs
CostFn (Interface)
Cost function that can work with many optimizers via `Cost`. [10 implementers]
internal/phast/src/optim.rs
KeySet (Interface)
A trait for accessing and managing sets of keys (of the type `K`) during construction of [`fmph::Function`](super::Funct [6 …
ph/src/fmph/keyset.rs
MPHFBuilder (Interface)
(no doc) [6 implementers]
mphf_benchmark/src/builder.rs
LevelSizer (Interface)
Chooses the size of level for the given sequence of retained values. [4 implementers]
csf/src/fp/level_sizer.rs
PrintParams (Interface)
(no doc) [8 implementers]
csf_benchmark/src/function.rs
Serializer (Interface)
Trait implemented by each serializer for the following types: `u8`, `u16`, `u32`, `u64`, `usize` (which, for portability [4 …
binout/src/lib.rs

Core symbols most depended-on inside this repo

len
called by 126
ph/src/fmph/function.rs
iter
called by 107
cseq/src/elias_fano.rs
params
called by 69
internal/phast/src/conf.rs
run
called by 67
internal/phast/src/conf.rs
iter
called by 67
ph/src/fmph/keyset.rs
get_unchecked
called by 51
cseq/src/elias_fano.rs
hash_one
called by 51
seedable_hash/src/lib.rs
len
called by 50
minimum_redundancy/src/code.rs

Shape

Method 1,224
Function 385
Class 186
Interface 56
Enum 16

Languages

Rust100%
Python1%

Modules by API surface

bitm/src/bitvec.rs92 symbols
cseq/src/elias_fano.rs87 symbols
ph/src/fmph/gofunction.rs65 symbols
ph/src/fmph/function.rs64 symbols
ph/src/fmph/keyset.rs54 symbols
ph/src/phast/conf.rs51 symbols
bitm/src/rank_select/mod.rs50 symbols
internal/phast/src/optim.rs44 symbols
minimum_redundancy/src/lib.rs42 symbols
cseq/src/wavelet_matrix.rs42 symbols
bitm/src/rank_select/select.rs38 symbols
ph/src/phast/perfect.rs35 symbols

For agents

$ claude mcp add bsuccinct-rs \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact