use super::*;
#[derive(Debug)]
#[derive(Clone, Copy, Eq, PartialEq, Hash)]
pub struct StateIndex(pub(crate) usize);
#[derive(PartialEq, Eq)]
pub struct State<'g> {
itemset: ItemSet<'g>,
}
impl<'g> State<'g> {
pub(crate) fn new(itemset: ItemSet<'g>) -> Self {
State {
itemset,
}
}
pub fn itemset(&self) -> &ItemSet<'g> {
&self.itemset
}
}
impl From<StateIndex> for usize {
fn from(value: StateIndex) -> Self {
value.0
}
}
impl<'g> std::fmt::Debug for State<'g> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
writeln!(f, "State")?;
for item in &self.itemset.items {
writeln!(f, "{item:?}")?;
}
Ok(())
}
}