Add default, is_empty

This commit is contained in:
Andrew Morris
2023-08-17 10:42:05 +10:00
parent 7fc96beb42
commit 29b2ae11e6
2 changed files with 15 additions and 0 deletions

View File

@@ -10,6 +10,7 @@ mod tests {
fn initial_len_0() {
let tree = RadixTree::<usize, 4>::new();
assert_eq!(tree.len(), 0);
assert!(tree.is_empty());
}
#[test]
@@ -17,6 +18,7 @@ mod tests {
let mut tree = RadixTree::<usize, 4>::new();
tree.push(0);
assert_eq!(tree.len(), 1);
assert!(!tree.is_empty());
}
#[test]

View File

@@ -20,6 +20,13 @@ impl<T: Clone, const N: usize> RadixTree<T, N> {
RadixTree::<T, N>(Rc::new(RadixTreeData::<T, N>::Meta(ArrayVec::new())))
}
pub fn is_empty(&self) -> bool {
match &*self.0 {
RadixTreeData::Meta(_) => false,
RadixTreeData::Leaves(leaves) => leaves.is_empty(),
}
}
pub fn len(&self) -> usize {
let mut res = 0;
let mut tree = self;
@@ -137,3 +144,9 @@ impl<T: Clone, const N: usize> RadixTree<T, N> {
meta_node_with_space.push(RadixTree(Rc::new(RadixTreeData::Leaves(new_leaves))));
}
}
impl<T: Clone, const N: usize> Default for RadixTree<T, N> {
fn default() -> Self {
Self::new()
}
}