#[derive(Debug, PartialEq)]
pub(crate) enum NodeType {
Item,
Separator,
}
#[derive(Debug)]
pub(crate) struct Node {
pub(crate) node_type: NodeType,
pub(crate) item: usize,
pub(crate) loc: usize,
pub(crate) option: usize,
pub(crate) color: usize,
}
impl Node {
pub(crate) fn separator(length: usize) -> Self {
Self {
node_type: NodeType::Separator,
item: length,
loc: 0,
option: 0,
color: 0,
}
}
pub(crate) fn item(item: usize, loc: usize, option: usize, color: usize) -> Self {
Self {
node_type: NodeType::Item,
item,
loc,
option,
color,
}
}
pub(crate) fn is_separator(&self) -> bool {
self.node_type == NodeType::Separator
}
pub(crate) fn lenght(&self) -> &usize {
if !self.is_separator() {
panic!("Never use this on item nodes!")
}
&self.item
}
}