#[macro_use]
extern crate trait_group;
mod levtrie;
// pub use self::levtrie::LevTrieNode as LevTrieNode;
pub use self::levtrie::DamerauLevenshteinDistanceCalculator;
pub use self::levtrie::DistanceCalculator;
pub use self::levtrie::LcsDistanceCalculator;
pub use self::levtrie::LevTrie;
pub use self::levtrie::LevenshteinDistanceCalculator;
pub use self::levtrie::LevenshteinNoSubDistanceCalculator;

mod trie;
pub use self::trie::Trie;

mod trienode;
//use self::trienode::TrieNode as TrieNode;

mod keychecker;
pub use self::keychecker::CaseInsensitiveKeyChecker;
pub use self::keychecker::CaseSensitiveKeyChecker;
pub use self::keychecker::KeyChecker;

pub type CaseSensitiveLevTrie = LevTrie<char, CaseSensitiveKeyChecker>;
pub type CaseInSensitiveLevTrie = LevTrie<char, CaseInsensitiveKeyChecker>;

mod search_result;
pub use self::search_result::SearchResult;

#[cfg(test)]
mod tests;
