use crate::data::YesData;
use crate::trie_node::{TrieNode, NodeAssociation};
pub type TrieDataNode<'a, D> = TrieNode<'a, D, YesData>;
impl<'a, D> TrieDataNode<'a, D> {
pub(crate) fn remove_all_words_collect(&mut self, found_data: &mut Vec<D>) {
self.children.values_mut().for_each(|child| {
child.remove_all_words_collect(found_data);
});
if let NodeAssociation::Data(data_vec) = self.clear_word_end_association(false) {
found_data.extend(data_vec);
}
self.clear_children();
}
pub(crate) fn generate_all_data<'b>(&'b self, found_data: &mut Vec<&'b D>) {
if let NodeAssociation::Data(data_vec) = &self.word_end_association {
found_data.extend(data_vec.iter());
}
self.children
.values()
.for_each(|x| x.generate_all_data(found_data));
}
pub(crate) fn push_data(&mut self, data: D) {
if let NodeAssociation::Data(vec) = &mut self.word_end_association {
vec.push(data);
}
}
}