#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum AbstainReason {
InsufficientEvidence(&'static str),
OutOfDistribution(&'static str),
AmbiguousRefinement(&'static str),
OperatorPreconditionUnmet(&'static str),
OntologyOutOfScope(&'static str),
NoOperatorLicenses(&'static str),
}
impl AbstainReason {
pub fn message(&self) -> &'static str {
match self {
AbstainReason::InsufficientEvidence(msg) => msg,
AbstainReason::OutOfDistribution(msg) => msg,
AbstainReason::AmbiguousRefinement(msg) => msg,
AbstainReason::OperatorPreconditionUnmet(msg) => msg,
AbstainReason::OntologyOutOfScope(msg) => msg,
AbstainReason::NoOperatorLicenses(msg) => msg,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_abstain_reason_message() {
let reason = AbstainReason::InsufficientEvidence("FiO₂ value missing");
assert_eq!(reason.message(), "FiO₂ value missing");
}
#[test]
fn test_abstain_variants() {
let _ = AbstainReason::InsufficientEvidence("test");
let _ = AbstainReason::OutOfDistribution("test");
let _ = AbstainReason::AmbiguousRefinement("test");
let _ = AbstainReason::OperatorPreconditionUnmet("test");
let _ = AbstainReason::OntologyOutOfScope("test");
let _ = AbstainReason::NoOperatorLicenses("test");
}
}