no-std sucds

Succinct data structures in Rust

23 releases

0.8.1 Sep 30, 2023
0.8.0 Jun 8, 2023
0.7.0 Mar 26, 2023
0.6.0 Nov 23, 2022
0.1.2 Nov 28, 2021

#174 in Data structures

Download history 5398/week @ 2024-06-14 7017/week @ 2024-06-21 5549/week @ 2024-06-28 6097/week @ 2024-07-05 7671/week @ 2024-07-12 11126/week @ 2024-07-19 6466/week @ 2024-07-26 6533/week @ 2024-08-02 6414/week @ 2024-08-09 5607/week @ 2024-08-16 6445/week @ 2024-08-23 5519/week @ 2024-08-30 4206/week @ 2024-09-06 3102/week @ 2024-09-13 2948/week @ 2024-09-20 1829/week @ 2024-09-27

12,732 downloads per month
Used in 6 crates (5 directly)

MIT/Apache

225KB
4K SLoC

Succinct data structures in Rust

Documentation Crates.io

Sucds provides some succinct data structures written in Rust.

Documentation

https://docs.rs/sucds/

Limitation

This library is designed to run on 64-bit machines.

Build docs

The document can be compiled with the following command:

RUSTDOCFLAGS="--html-in-header katex.html" cargo doc --no-deps

Licensing

Licensed under either of

at your option.


lib.rs:

Succinct data structures in Rust

Sucds is a collection of succinct data structures, powerful tools to store a variety of data structures in compressed space and quickly perform operations on the compressed data.

Design policy

Thus far, many succinct data structures and their implementation techniques have been developed for a wide range of applications. To handle them in a single crate, we set up several design policies:

  • Maintain interface consistency: Sucds will adhere to a unified interface, facilitating the integration and replacement of data structures.

  • Preserve identity: Rather than offering every possible succinct data structure, Sucds will focus on providing only those that hold a competitive advantage over others.

  • Ensure safety: To avoid potential risks, Sucds will refrain from using unsafe instructions typically reserved for extremely low-level programming.

  • Remain Rust-centric: Sucds will consistently utilize Pure Rust in its implementation.

Data structures

The data structures provided in this crate are categorized as follows:

The descriptions for each category are available in the corresponding module.

Throughout this document, we write $\log_2$ with $\lg$.

Serialization/deserialization

All the data structures can be serialized or deserialized through the Serializable trait.

Limitation

This library is designed to run on 64-bit machines.

Dependencies

~200–280KB