#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum ReplayStatus {
Replay = 0,
New = 1,
}
impl ReplayStatus {
pub fn is_replay(&self) -> bool {
matches!(self, Self::Replay)
}
pub fn is_new(&self) -> bool {
matches!(self, Self::New)
}
}
impl From<u8> for ReplayStatus {
fn from(value: u8) -> Self {
match value {
0 => Self::Replay,
_ => Self::New,
}
}
}
impl From<ReplayStatus> for u8 {
fn from(status: ReplayStatus) -> Self {
status as u8
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_replay_status_replay() {
let status = ReplayStatus::Replay;
assert!(status.is_replay());
assert!(!status.is_new());
}
#[test]
fn test_replay_status_new() {
let status = ReplayStatus::New;
assert!(!status.is_replay());
assert!(status.is_new());
}
#[test]
fn test_replay_status_from_u8() {
assert_eq!(ReplayStatus::from(0), ReplayStatus::Replay);
assert_eq!(ReplayStatus::from(1), ReplayStatus::New);
assert_eq!(ReplayStatus::from(2), ReplayStatus::New);
}
#[test]
fn test_replay_status_to_u8() {
assert_eq!(u8::from(ReplayStatus::Replay), 0);
assert_eq!(u8::from(ReplayStatus::New), 1);
}
}