//!
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum Phase {
/// Before visiting a node
Before,
/// While visiting a node, between visiting child {0} and {1}
Between(usize, usize),
/// After visiting a node
After,
}
impl std::fmt::Display for Phase {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Before => write!(f, "before"),
Self::Between(prev, next) => write!(f, "between {prev} & {next}"),
Self::After => write!(f, "after"),
}
}
}