use std::fmt;
#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Default)]
pub struct StateId(pub u32);
impl StateId {
pub const STUCK: StateId = StateId(u32::MAX);
pub fn index(self) -> usize {
self.0 as usize
}
pub fn is_stuck(self) -> bool {
self == Self::STUCK
}
}
impl fmt::Debug for StateId {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if self.is_stuck() {
f.write_str("StateId::STUCK")
} else {
f.debug_tuple("StateId").field(&self.0).finish()
}
}
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Debug, Default)]
pub struct Symbol(pub u32);
pub type Arity = u8;