From 575281869bda60f543cf3163a8aaaf5f3f8518f9 Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Mon, 18 Dec 2023 12:42:48 +0800 Subject: [PATCH] removed public visibility of some library internals --- examples/benchmark.rs | 3 --- src/levtrie.rs | 6 +++--- src/mod.rs | 24 ------------------------ src/trie.rs | 33 ++++++++++++++------------------- src/trienode.rs | 23 +++++++---------------- 5 files changed, 24 insertions(+), 65 deletions(-) delete mode 100644 src/mod.rs diff --git a/examples/benchmark.rs b/examples/benchmark.rs index e52fd66..ddfd1d4 100644 --- a/examples/benchmark.rs +++ b/examples/benchmark.rs @@ -1,11 +1,8 @@ extern crate levtree; - -use levtree::CaseSensitiveKeyChecker; use levtree::CaseSensitiveLevTrie; use levtree::DamerauLevenshteinDistanceCalculator; use levtree::LevTrie; -use levtree::Trie; use std::io::BufRead; use std::io::BufReader; diff --git a/src/levtrie.rs b/src/levtrie.rs index e2b8abd..ec3d14a 100644 --- a/src/levtrie.rs +++ b/src/levtrie.rs @@ -9,8 +9,8 @@ use super::trie::VisitOutcome; use super::trienode::TrieKey; use super::trienode::TrieNode; -pub type LevTrie = Trie; -pub type LevTrieNode = TrieNode; +pub type LevTrie = Trie; +pub type LevTrieNode = TrieNode; #[sealed] pub trait DistanceCalculator @@ -33,7 +33,7 @@ where KEYCHECKER: KeyChecker, { pub fn new() -> LevTrie { - Trie::empty(|| {}) + Trie::empty() } pub fn from_words(wordlist: U) -> LevTrie diff --git a/src/mod.rs b/src/mod.rs deleted file mode 100644 index 444e456..0000000 --- a/src/mod.rs +++ /dev/null @@ -1,24 +0,0 @@ -#[macro_use] extern crate trait_group; -mod levtrie; -// pub use self::levtrie::LevTrieNode as LevTrieNode; -pub use self::levtrie::LevTrie; -pub use self::levtrie::DistanceCalculator; -pub use self::levtrie::DamerauLevenshteinDistanceCalculator; -pub use self::levtrie::LevenshteinDistanceCalculator; - -mod trie; -pub use self::trie::Trie as Trie; - -mod trienode; -//use self::trienode::TrieNode as TrieNode; - -mod keychecker; -pub use self::keychecker::KeyChecker; -pub use self::keychecker::CaseSensitiveKeyChecker; -pub use self::keychecker::CaseInsensitiveKeyChecker; - -pub type CaseSensitiveLevTrie = LevTrie; -pub type CaseInSensitiveLevTrie = LevTrie; - -mod result; -pub use self::result::Result; \ No newline at end of file diff --git a/src/trie.rs b/src/trie.rs index ffe7bbb..3b93842 100644 --- a/src/trie.rs +++ b/src/trie.rs @@ -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 +pub struct Trie where KEY: TrieKey, KEYCHECKER: KeyChecker, { - pub nodes: Vec>, - payload_initializer: fn() -> PAYLOAD, + pub (crate) nodes: Vec>, tails: BTreeSet, checker: PhantomData, } -impl Trie +impl Trie where KEY: TrieKey, KEYCHECKER: KeyChecker, { - pub fn empty(initializer: fn() -> PAYLOAD) -> Trie { + pub fn empty() -> Trie { 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( - initializer: fn() -> PAYLOAD, wordlist: U, - ) -> Trie + ) -> Trie where T: IntoIterator, U: IntoIterator, { - 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 { + pub (crate) fn get_node_mut(&mut self, index: usize) -> &mut TrieNode { &mut self.nodes[index] } - pub fn get_node(&self, index: usize) -> &TrieNode { + pub (crate) fn get_node(&self, index: usize) -> &TrieNode { &self.nodes[index] } - pub fn nodes(&self) -> usize { + pub (crate) fn nodes(&self) -> usize { self.nodes.len() } fn add_node(&mut self, key: Option, parent: usize, prev: Option) -> 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| {}; + let visit_post = |_: &Vec| {}; self.walk(visit_pre, visit_post); result } @@ -207,7 +201,7 @@ where chars } - pub fn walk(&self, mut visit_pre: CB1, mut visit_post: CB2) + pub (crate) fn walk(&self, mut visit_pre: CB1, mut visit_post: CB2) where CB1: FnMut(&Vec) -> VisitOutcome, CB2: FnMut(&Vec), @@ -249,3 +243,4 @@ where &self.tails } } + diff --git a/src/trienode.rs b/src/trienode.rs index 494d29a..c8a0a85 100644 --- a/src/trienode.rs +++ b/src/trienode.rs @@ -2,39 +2,32 @@ trait_group! { pub trait TrieKey : std::marker::Copy + std::fmt::Display + Sized } -// pub trait KeyPath : std::ops::Index + IntoIterator {} - -pub struct TrieNode +pub struct TrieNode where KEY: TrieKey, { pub key: Option, - pub payload: PAYLOAD, pub prev: Option, pub next: Option, pub child: Option, pub parent: Option, - pub ref_count: usize, + pub (crate) ref_count: usize, } -impl TrieNode +impl TrieNode where KEY: TrieKey, { - fn new( + fn new( key: Option, - payload_initializer: U, prev: Option, next: Option, parent: Option, child: Option, - ) -> TrieNode - where - U: Fn() -> PAYLOAD, + ) -> TrieNode { TrieNode { key, - payload: payload_initializer(), prev: prev, next: next, child: child, @@ -43,10 +36,8 @@ where } } - pub fn new0(key: Option, payload_initializer: U) -> TrieNode - where - U: Fn() -> PAYLOAD, + pub (crate) fn new0(key: Option) -> TrieNode { - TrieNode::new(key, payload_initializer, None, None, None, None) + TrieNode::new(key, None, None, None, None) } }