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;