removed public visibility of some library internals

This commit is contained in:
2023-12-18 12:42:48 +08:00
parent 9291180936
commit 575281869b
5 changed files with 24 additions and 65 deletions
+14 -19
View File
@@ -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
}
}