#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ExitReason {
Normal,
Killed,
Crashed,
NoProc,
}
impl ExitReason {
pub fn is_abnormal(self) -> bool {
!matches!(self, ExitReason::Normal)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct MonitorRef(pub(crate) u64);
impl MonitorRef {
pub fn raw(self) -> u64 {
self.0
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn only_normal_is_not_abnormal() {
assert!(!ExitReason::Normal.is_abnormal());
assert!(ExitReason::Killed.is_abnormal());
assert!(ExitReason::Crashed.is_abnormal());
assert!(ExitReason::NoProc.is_abnormal());
}
#[test]
fn monitor_ref_exposes_its_raw_id() {
assert_eq!(MonitorRef(7).raw(), 7);
}
}