#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
#[non_exhaustive]
pub enum ExecutionMode {
#[default]
Auto,
Supervised,
}
impl ExecutionMode {
#[must_use]
pub const fn requires_approval(self) -> bool {
matches!(self, Self::Supervised)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn auto_is_default_and_does_not_require_approval() {
let mode: ExecutionMode = ExecutionMode::default();
assert_eq!(mode, ExecutionMode::Auto);
assert!(!mode.requires_approval());
}
#[test]
fn supervised_requires_approval() {
assert!(ExecutionMode::Supervised.requires_approval());
}
}