use std::sync::Arc;
use parking_lot::Mutex;
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub enum RegistrationStatus {
#[default]
Idle,
InFlight,
Success,
Failed(String),
}
pub type SharedRegistration = Arc<Mutex<RegistrationStatus>>;
pub fn shared() -> SharedRegistration {
Arc::new(Mutex::new(RegistrationStatus::default()))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_is_idle() {
assert_eq!(RegistrationStatus::default(), RegistrationStatus::Idle);
}
#[test]
fn failed_carries_reason() {
let s = RegistrationStatus::Failed("boom".into());
match s {
RegistrationStatus::Failed(r) => assert_eq!(r, "boom"),
_ => panic!("expected Failed"),
}
}
}