use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[non_exhaustive]
pub enum ComplianceStatus {
PassthroughNoValidation,
Compliant,
NonCompliant,
NotAssessed,
NotImplemented,
}
impl ComplianceStatus {
pub const ALL: &'static [Self] = &[
Self::PassthroughNoValidation,
Self::Compliant,
Self::NonCompliant,
Self::NotAssessed,
Self::NotImplemented,
];
}
#[must_use]
pub fn gate_determination(in_force: bool, raw: ComplianceStatus) -> ComplianceStatus {
if in_force {
return raw;
}
match raw {
ComplianceStatus::Compliant | ComplianceStatus::NonCompliant => {
ComplianceStatus::NotAssessed
}
other => other,
}
}