1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//! # Succinct data structures in Rust
//!
//! Jerky is a collection of [succinct data structures](https://en.wikipedia.org/wiki/Succinct_data_structure),
//! 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:**
//! Jerky will adhere to a unified interface, facilitating the integration and replacement of data structures.
//!
//! - **Preserve identity:**
//! Rather than offering every possible succinct data structure,
//! Jerky will focus on providing only those that hold a competitive advantage over others.
//!
//! - **Ensure safety:**
//! To avoid potential risks, Jerky will refrain from using unsafe instructions
//! typically reserved for extremely low-level programming.
//!
//! - **Remain Rust-centric:**
//! Jerky will consistently utilize Pure Rust in its implementation.
//!
//! ## Data structures
//!
//! The data structures provided in this crate are categorized as follows:
//!
//! - [Integer vectors](crate::int_vectors)
//! - [Bit vectors](crate::bit_vector)
//! - [Character sequences](crate::char_sequences)
//!
//! The descriptions for each category are available in the corresponding module.
//!
//! Throughout this document, we write $`\log_2`$ with $`\lg`$.
//!
//! ## Serialization
//!
//! The previous copying based serialization infrastructure has been removed and
//! will be replaced with zero‑copy utilities in the future.
//!
//! ## Limitation
//!
//! This library is designed to run on 64-bit machines.
compile_error!;
pub use BitVector;
pub use BitVectorData;
pub use BitVectorIndex;
pub use NoIndex;
pub use IntVectorData;
pub use ;
pub use Serializable;
// NOTE(kampersanda): We should not use `get()` because it has been already used in most std
// containers with different type annotations.