pub struct TrieTree<T> { /* private fields */ }
Expand description
§A TrieTree that supports the following functions:
- Insert values
- Remove values
- Traversal values
- Prefix lookup values
- Debug Struct
Implementations§
Source§impl<T> TrieTree<T>
impl<T> TrieTree<T>
Sourcepub fn clear(&mut self)
pub fn clear(&mut self)
clear all values
§Examples
let mut tree = TrieTree::new();
assert_eq!(tree.count(), 0);
assert!(tree.insert("abc".chars()));
assert_eq!(tree.count(), 1);
assert!(tree.query("abc".chars()));
tree.clear();
assert_eq!(tree.count(), 0);
assert!(! tree.query("abc".chars()));
assert!(tree.insert("abc".chars()));
Sourcepub fn insert(&mut self, iter: impl IntoIterator<Item = T>) -> bool
pub fn insert(&mut self, iter: impl IntoIterator<Item = T>) -> bool
insert values.
- return whether the insertion values was successful
§Examples
let mut tree = TrieTree::new();
assert_eq!(tree.count(), 0);
assert!(tree.insert("abc".chars()));
assert_eq!(tree.count(), 1);
assert!(! tree.insert("abc".chars()));
assert_eq!(tree.count(), 1);
Sourcepub fn query<Q>(&self, iter: impl IntoIterator<Item = Q>) -> boolwhere
Q: Borrow<T>,
pub fn query<Q>(&self, iter: impl IntoIterator<Item = Q>) -> boolwhere
Q: Borrow<T>,
§Whether the query values is in the tree Result list examples
query | data | result |
---|---|---|
abcd | abcd | true |
abc | abcd | false |
bcd | abcd | false |
abcde | abcd | false |
§Examples
let mut tree = TrieTree::new();
assert!(tree.insert("abcd".chars()));
assert!(tree.query("abcd".chars()));
assert!(! tree.query("abc".chars()));
assert!(! tree.query("bcd".chars()));
assert!(! tree.query("abcde".chars()));
Sourcepub fn query_nostop<Q>(&self, iter: impl IntoIterator<Item = Q>) -> Option<bool>where
Q: Borrow<T>,
pub fn query_nostop<Q>(&self, iter: impl IntoIterator<Item = Q>) -> Option<bool>where
Q: Borrow<T>,
§Whether the query values head is in the tree Result list examples
query | data | result |
---|---|---|
abcd | Some(false) | |
abc | abcd | Some(false) |
abcd | abcd | Some(true) |
bcd | abcd | None |
abcde | abcd | None |
§Examples
let mut tree = TrieTree::new();
assert_eq!(tree.query_nostop("".chars()), Some(false));
assert!(tree.insert("abcd".chars()));
assert_eq!(tree.query_nostop("abc".chars()), Some(false));
assert_eq!(tree.query_nostop("abcd".chars()), Some(true));
assert_eq!(tree.query_nostop("bcd".chars()), None);
assert_eq!(tree.query_nostop("abcde".chars()), None);
Sourcepub fn query_iter<Q>(
&self,
iter: impl IntoIterator<Item = Q>,
) -> Option<Iter<'_, T>>where
Q: Borrow<T>,
pub fn query_iter<Q>(
&self,
iter: impl IntoIterator<Item = Q>,
) -> Option<Iter<'_, T>>where
Q: Borrow<T>,
Get the Iterator matching the prefix
If there is no matching value, return None
§Examples
let mut tree = TrieTree::new();
assert!(tree.insert("abc".chars()));
assert!(tree.insert("ace".chars()));
assert!(tree.insert("bee".chars()));
let mut res: Vec<_> = tree.query_iter("a".chars()).unwrap().collect();
res.sort();
assert_eq!(res, vec![vec![&'b', &'c'], vec![&'c', &'e']]);
Sourcepub fn remove<Q>(&mut self, iter: impl IntoIterator<Item = Q>) -> boolwhere
Q: Borrow<T>,
pub fn remove<Q>(&mut self, iter: impl IntoIterator<Item = Q>) -> boolwhere
Q: Borrow<T>,
remove values and clean up overhanging branches
§Examples
let mut tree = TrieTree::new();
assert_eq!(tree.count(), 0);
assert!(tree.insert("abc".chars()));
assert_eq!(tree.count(), 1);
assert!(tree.query("abc".chars()));
assert!(tree.remove("abc".chars()));
assert!(! tree.remove("abc".chars()));
assert!(! tree.query("abc".chars()));
assert_eq!(tree.count(), 0);
Sourcepub fn iter(&self) -> Iter<'_, T> ⓘ
pub fn iter(&self) -> Iter<'_, T> ⓘ
get iterator
§Examples
let tree = TrieTree::from_iter(["abc".chars(), "bcd".chars()]);
let mut items: Vec<Vec<&char>> = tree.iter().collect();
items.sort();
assert_eq!(items[0], [&'a', &'b', &'c']);
assert_eq!(items[1], [&'b', &'c', &'d']);
Sourcepub fn shrink_to_fit(&mut self)
pub fn shrink_to_fit(&mut self)
Shrink each HashMap
in the tree
§Examples
let mut tree = TrieTree::from_iter(["abc".chars(), "bcd".chars()]);
tree.shrink_to_fit();
Trait Implementations§
Source§impl<T, I> Extend<I> for TrieTree<T>
impl<T, I> Extend<I> for TrieTree<T>
Source§fn extend<IntoIter: IntoIterator<Item = I>>(&mut self, iter: IntoIter)
fn extend<IntoIter: IntoIterator<Item = I>>(&mut self, iter: IntoIter)
§Examples
let mut tree = TrieTree::new();
tree.extend([&[1, 2, 3][..], &[1, 2][..]]);
assert!(tree.query(&[1, 2, 3]));
assert!(tree.query(&[1, 2]));
assert!(! tree.query(&[1]));
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
🔬This is a nightly-only experimental API. (
extend_one
)Extends a collection with exactly one element.
Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
🔬This is a nightly-only experimental API. (
extend_one
)Reserves capacity in a collection for the given number of additional elements. Read more
Source§impl<T, I> FromIterator<I> for TrieTree<T>
impl<T, I> FromIterator<I> for TrieTree<T>
Source§fn from_iter<IntoIter: IntoIterator<Item = I>>(iter: IntoIter) -> Self
fn from_iter<IntoIter: IntoIterator<Item = I>>(iter: IntoIter) -> Self
§Examples
let tree: TrieTree<_> = [[1, 2, 3], [1, 3, 5]].into_iter().collect();
assert!(tree.query([1, 2, 3]));
assert!(tree.query([1, 3, 5]));
Source§impl<'a, T> IntoIterator for &'a TrieTree<T>
impl<'a, T> IntoIterator for &'a TrieTree<T>
impl<T: Hash + Eq> Eq for TrieTree<T>
Auto Trait Implementations§
impl<T> Freeze for TrieTree<T>
impl<T> RefUnwindSafe for TrieTree<T>where
T: RefUnwindSafe,
impl<T> Send for TrieTree<T>where
T: Send,
impl<T> Sync for TrieTree<T>where
T: Sync,
impl<T> Unpin for TrieTree<T>where
T: Unpin,
impl<T> UnwindSafe for TrieTree<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more