splinter_rs/
lib.rs

1//! Splinter is a compressed bitmap format similar to [Roaring
2//! Bitmaps](https://roaringbitmap.org/), optimized specifically for small,
3//! sparse sets of 32-bit unsigned integers (`u32`).
4//!
5//! ## Key Features:
6//!
7//! - **Tree-based Encoding**: Splinter encodes `u32` values into a 256-way tree
8//!   structure by decomposing integers into big-endian component bytes. Nodes
9//!   throughout the tree (including the root) are optimized into four different
10//!   storage classes: tree, vec, bitmap, run.
11//! - **Zero-copy Access**: Designed for efficient querying without
12//!   deserialization, the `SplinterRef` type allows direct, zero-copy reads from
13//!   any type implementing `Deref<Target = [u8]>`.
14
15pub mod codec;
16pub mod cow;
17pub mod level;
18pub mod splinter;
19pub mod splinter_ops;
20pub mod splinter_ref;
21pub mod splinter_ref_ops;
22pub mod traits;
23
24#[doc(hidden)]
25pub mod count;
26
27mod never;
28mod partition;
29mod partition_kind;
30mod partition_ops;
31mod segment;
32mod util;
33
34#[doc(inline)]
35pub use cow::CowSplinter;
36#[doc(inline)]
37pub use splinter::Splinter;
38#[doc(inline)]
39pub use splinter_ref::SplinterRef;
40
41#[doc(inline)]
42pub use crate::{
43    codec::{DecodeErr, Encodable},
44    traits::{Cut, Optimizable, PartitionRead, PartitionWrite},
45};
46
47#[cfg(any(test, feature = "testutil"))]
48pub mod testutil;