//! Node types for the RadixTree module. /// Represents a node in the radix tree. #[derive(Debug, Clone, PartialEq)] pub struct Node { /// The segment of the key stored at this node. pub key_segment: String, /// Value stored at this node (empty if not a leaf). pub value: Vec, /// References to child nodes. pub children: Vec, /// Whether this node is a leaf node. pub is_leaf: bool, } /// Reference to a node in the database. #[derive(Debug, Clone, PartialEq)] pub struct NodeRef { /// The key segment for this child. pub key_part: String, /// Database ID of the node. pub node_id: u32, } impl Node { /// Creates a new node. pub fn new(key_segment: String, value: Vec, is_leaf: bool) -> Self { Self { key_segment, value, children: Vec::new(), is_leaf, } } /// Creates a new root node. pub fn new_root() -> Self { Self { key_segment: String::new(), value: Vec::new(), children: Vec::new(), is_leaf: false, } } } impl NodeRef { /// Creates a new node reference. pub fn new(key_part: String, node_id: u32) -> Self { Self { key_part, node_id, } } }