1use crate::internal_data_structure::naive_trie::NaiveTrie;
3use louds_rs::Louds;
4
5mod trie;
6mod trie_builder;
7
8#[cfg(feature = "mem_dbg")]
9use mem_dbg::MemDbg;
10
11#[derive(Debug, Clone)]
12#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))]
13#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
14pub struct Trie<Label, Value> {
16 louds: Louds,
17
18 trie_labels: Vec<TrieLabel<Label, Value>>,
20}
21
22#[derive(Debug, Clone)]
23#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))]
24#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
25pub struct TrieBuilder<Label, Value> {
27 naive_trie: NaiveTrie<Label, Value>,
28}
29
30#[derive(Debug, Clone)]
31#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))]
32#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
33struct TrieLabel<Label, Value> {
34 label: Label,
35 value: Option<Value>,
36}