use fxhash::FxBuildHasher; use std::collections::HashMap; type FxHashMap = HashMap; //simpler, slightly faster #[derive(Default, Debug, Clone)] struct Node { end: bool, children: FxHashMap, } #[derive(Default, Debug, Clone)] pub struct Trie { root: Node, } impl Trie { pub fn insert(&mut self, word: &str) { let mut node = &mut self.root; for char in word.chars() { node = node.children.entry(char).or_default(); } node.end = true; } pub fn contains(&self, word: &str) -> bool { let mut current_node = &self.root; for char in word.chars() { match current_node.children.get(&char) { Some(node) => current_node = node, None => return false, } } current_node.end } }