Skip to main content

Crate succinctly

Crate succinctly 

Source
Expand description

§Succinctly

High-performance succinct data structures for Rust.

This crate provides space-efficient data structures with fast rank and select operations, optimized for both x86_64 and ARM (NEON) architectures.

§Module Organization

  • bits - Bitvector with O(1) rank and O(log n) select
  • trees - Succinct tree representations (balanced parentheses)
  • json - JSON semi-indexing with SIMD acceleration
  • jq - jq-style query language for JSON navigation
  • dsv - High-performance CSV/TSV parsing with succinct indexing
  • yaml - YAML semi-indexing (Phase 1: block style)

§Quick Start

use succinctly::{BitVec, RankSelect};

// Create a bitvector from u64 words
let words = vec![0b1010_1010_1010_1010u64; 8];
let bv = BitVec::from_words(words, 512);

// Query rank (count of 1-bits in [0, i))
assert_eq!(bv.rank1(8), 4);

// Query select (position of k-th 1-bit)
assert_eq!(bv.select1(0), Some(1));

§Features

Popcount strategies (mutually exclusive, for benchmarking):

  • Default: Uses Rust’s count_ones() which auto-vectorizes
  • simd - Use explicit SIMD intrinsics (NEON on ARM, POPCNT on x86)
  • portable-popcount - Use portable bitwise algorithm (no intrinsics)

Other features:

  • serde - Enable serialization/deserialization support

Re-exports§

pub use bits::BitVec;
pub use bits::popcount_word;
pub use bits::popcount_words;
pub use bits::RankDirectory;
pub use bits::SelectIndex;
pub use trees::BalancedParens;
pub use dsv::Dsv;
pub use dsv::DsvConfig;
pub use dsv::DsvCursor;
pub use dsv::DsvIndex;

Modules§

binary
Binary serialization utilities. Binary serialization for succinct data structures.
bits
Bitvector implementations with rank and select support. Bitvector implementations with rank and select support.
dsv
High-performance DSV (CSV/TSV) parsing with succinct indexing. High-performance DSV (Delimiter-Separated Values) parsing with succinct indexing.
jq
jq-style query language for JSON navigation. jq-like query expressions for JSON navigation.
json
JSON semi-indexing with SIMD acceleration. JSON semi-indexing for succinct JSON parsing.
trees
Succinct tree representations. Succinct tree representations.
yaml
YAML semi-indexing (Phase 1: YAML-lite). YAML semi-indexing for succinct YAML parsing (Phase 4: Anchors & Aliases).

Structs§

Config
Configuration for building indices.

Traits§

RankSelect
Trait for rank/select operations on bitvectors.

Functions§

select_in_word
Select the k-th set bit (0-indexed) in a 64-bit word.