removed public visibility of some library internals
This commit is contained in:
+14
-19
@@ -1,10 +1,7 @@
|
||||
use std::collections::BTreeSet;
|
||||
use std::collections::HashMap;
|
||||
use std::marker::PhantomData;
|
||||
|
||||
use super::keychecker::KeyChecker;
|
||||
use super::levtrie::DistanceCalculator;
|
||||
use super::result::Result;
|
||||
use super::trienode::TrieKey;
|
||||
use super::trienode::TrieNode;
|
||||
|
||||
@@ -14,60 +11,57 @@ pub enum VisitOutcome {
|
||||
EarlyExit,
|
||||
}
|
||||
|
||||
pub struct Trie<KEY, KEYCHECKER, PAYLOAD>
|
||||
pub struct Trie<KEY, KEYCHECKER>
|
||||
where
|
||||
KEY: TrieKey,
|
||||
KEYCHECKER: KeyChecker<KEY>,
|
||||
{
|
||||
pub nodes: Vec<TrieNode<KEY, PAYLOAD>>,
|
||||
payload_initializer: fn() -> PAYLOAD,
|
||||
pub (crate) nodes: Vec<TrieNode<KEY>>,
|
||||
tails: BTreeSet<usize>,
|
||||
checker: PhantomData<KEYCHECKER>,
|
||||
}
|
||||
|
||||
impl<KEY, KEYCHECKER, PAYLOAD> Trie<KEY, KEYCHECKER, PAYLOAD>
|
||||
impl<KEY, KEYCHECKER> Trie<KEY, KEYCHECKER>
|
||||
where
|
||||
KEY: TrieKey,
|
||||
KEYCHECKER: KeyChecker<KEY>,
|
||||
{
|
||||
pub fn empty(initializer: fn() -> PAYLOAD) -> Trie<KEY, KEYCHECKER, PAYLOAD> {
|
||||
pub fn empty() -> Trie<KEY, KEYCHECKER> {
|
||||
Trie {
|
||||
nodes: vec![TrieNode::new0(None, initializer)],
|
||||
payload_initializer: initializer,
|
||||
nodes: vec![TrieNode::new0(None)],
|
||||
tails: BTreeSet::new(),
|
||||
checker: PhantomData::default(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn trie_from_words<T: IntoIterator, U: IntoIterator>(
|
||||
initializer: fn() -> PAYLOAD,
|
||||
wordlist: U,
|
||||
) -> Trie<KEY, KEYCHECKER, PAYLOAD>
|
||||
) -> Trie<KEY, KEYCHECKER>
|
||||
where
|
||||
T: IntoIterator<Item = KEY>,
|
||||
U: IntoIterator<Item = T>,
|
||||
{
|
||||
let mut result = Trie::empty(initializer);
|
||||
let mut result = Trie::empty();
|
||||
for word in wordlist {
|
||||
result.add(word);
|
||||
}
|
||||
result
|
||||
}
|
||||
|
||||
pub fn get_node_mut(&mut self, index: usize) -> &mut TrieNode<KEY, PAYLOAD> {
|
||||
pub (crate) fn get_node_mut(&mut self, index: usize) -> &mut TrieNode<KEY> {
|
||||
&mut self.nodes[index]
|
||||
}
|
||||
|
||||
pub fn get_node(&self, index: usize) -> &TrieNode<KEY, PAYLOAD> {
|
||||
pub (crate) fn get_node(&self, index: usize) -> &TrieNode<KEY> {
|
||||
&self.nodes[index]
|
||||
}
|
||||
|
||||
pub fn nodes(&self) -> usize {
|
||||
pub (crate) fn nodes(&self) -> usize {
|
||||
self.nodes.len()
|
||||
}
|
||||
|
||||
fn add_node(&mut self, key: Option<KEY>, parent: usize, prev: Option<usize>) -> usize {
|
||||
let mut result = TrieNode::new0(key, self.payload_initializer);
|
||||
let mut result = TrieNode::new0(key);
|
||||
let result_index = self.nodes();
|
||||
result.parent = Some(parent);
|
||||
match prev {
|
||||
@@ -178,7 +172,7 @@ where
|
||||
}
|
||||
}
|
||||
};
|
||||
let visit_post = |stack: &Vec<usize>| {};
|
||||
let visit_post = |_: &Vec<usize>| {};
|
||||
self.walk(visit_pre, visit_post);
|
||||
result
|
||||
}
|
||||
@@ -207,7 +201,7 @@ where
|
||||
chars
|
||||
}
|
||||
|
||||
pub fn walk<CB1, CB2>(&self, mut visit_pre: CB1, mut visit_post: CB2)
|
||||
pub (crate) fn walk<CB1, CB2>(&self, mut visit_pre: CB1, mut visit_post: CB2)
|
||||
where
|
||||
CB1: FnMut(&Vec<usize>) -> VisitOutcome,
|
||||
CB2: FnMut(&Vec<usize>),
|
||||
@@ -249,3 +243,4 @@ where
|
||||
&self.tails
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user