extern crate endian_type;
extern crate nibble_vec;
#[cfg(test)]
extern crate quickcheck;
#[cfg(test)]
extern crate rand;
pub use keys::TrieKey;
pub use nibble_vec::NibbleVec;
pub use trie_common::TrieCommon;
use trie_node::TrieNode;
use nibble_vec::Nibblet;
#[macro_use]
mod macros;
pub mod iter;
mod keys;
#[cfg(feature = "serde")]
mod serde;
mod subtrie;
mod traversal;
mod trie;
mod trie_common;
mod trie_node;
#[cfg(test)]
mod qc_test;
#[cfg(test)]
mod test;
const BRANCH_FACTOR: usize = 16;
#[derive(Debug, Clone)]
pub struct Trie<K, V> {
length: usize,
node: TrieNode<K, V>,
}
#[derive(Debug)]
pub struct SubTrie<'a, K: 'a, V: 'a> {
prefix: Nibblet,
node: &'a TrieNode<K, V>,
}
#[derive(Debug)]
pub struct SubTrieMut<'a, K: 'a, V: 'a> {
prefix: Nibblet,
length: &'a mut usize,
node: &'a mut TrieNode<K, V>,
}
pub type SubTrieResult<T> = Result<Option<T>, ()>;