trie_rs/trie/
trie_builder.rs1use super::Trie;
2use crate::map;
3
4#[cfg(feature = "mem_dbg")]
5use mem_dbg::MemDbg;
6
7#[derive(Debug, Clone)]
8#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))]
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10pub struct TrieBuilder<Label>(map::TrieBuilder<Label, ()>);
12
13impl<Label: Ord> TrieBuilder<Label> {
14 pub fn new() -> Self {
16 Self(map::TrieBuilder::new())
17 }
18
19 pub fn push<Arr: AsRef<[Label]>>(&mut self, entry: Arr)
21 where
22 Label: Clone,
23 {
24 self.0.push(entry, ());
25 }
26
27 pub fn insert<Arr: IntoIterator<Item = Label>>(&mut self, entry: Arr) {
29 self.0.insert(entry, ());
30 }
31
32 pub fn build(self) -> Trie<Label> {
34 Trie(self.0.build())
35 }
36}
37
38impl<Label: Ord> Default for TrieBuilder<Label> {
39 fn default() -> Self {
40 Self::new()
41 }
42}