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
//! Succinct data structures for Rust.
//!
//! This library is a very early work in progress. So far we have:
//!
//!   - [integer vectors](int_vector/struct.IntVec.html) with arbitrary-sized
//!     (1- to 64-bit) elements;
//!   - [bit vectors](bit_vector/struct.BitVec.html) and [bit
//!     buffers](stream/struct.BitBuffer.html),
//!   - a variety of [universal codes](coding/index.html),
//!   - constant-time [rank](struct.JacobsonRank.html) queries; and
//!   - *O*(lg lg *n*)-time [select](struct.BinSearchSelect.html) queries
//!     based on binary search over ranks.
//!
//! # Usage
//!
//! It’s [on crates.io](https://crates.io/crates/succinct), so you can add
//!
//! ```toml
//! [dependencies]
//! succinct = "0.3.0"
//! ```
//!
//! to your `Cargo.toml` and
//!
//! ```rust
//! extern crate succinct;
//! ```
//!
//! to your crate root.

#![warn(missing_docs)]

#![cfg_attr(feature = "clippy", feature(plugin))]
#![cfg_attr(feature = "clippy", plugin(clippy))]

extern crate byteorder;
extern crate num;

#[cfg(test)]
extern crate quickcheck;

mod util;
mod errors;

pub mod storage;
pub mod stream;
pub mod coding;

pub mod bit_vector;
pub use bit_vector::{Bits, BitsMut, BitVector, BitVec};

pub mod int_vector;
pub use int_vector::{IntVector, IntVectorMut, IntVec};

pub mod rank;
pub use rank::JacobsonRank;

pub mod select;
pub use select::BinSearchSelect;

mod space_usage;
pub use space_usage::SpaceUsage;