pub use crate::runtime::matcher::RuleMissReason;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct RuleMiss<RuleWitness> {
rule: RuleWitness,
reason: RuleMissReason,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RuleAttemptStableReason<RuleWitness> {
NoExecutableRules,
FinalMiss(RuleMiss<RuleWitness>),
}
impl<RuleWitness> RuleMiss<RuleWitness> {
pub(crate) const fn new(rule: RuleWitness, reason: RuleMissReason) -> Self {
Self { rule, reason }
}
#[must_use]
pub const fn rule(&self) -> &RuleWitness {
&self.rule
}
#[must_use]
pub const fn reason(&self) -> RuleMissReason {
self.reason
}
#[must_use]
pub fn into_parts(self) -> (RuleWitness, RuleMissReason) {
(self.rule, self.reason)
}
}