#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[non_exhaustive]
pub enum Consumed {
No,
Yes,
}
impl Consumed {
#[must_use]
pub const fn is_yes(self) -> bool {
matches!(self, Self::Yes)
}
#[must_use]
pub const fn is_no(self) -> bool {
matches!(self, Self::No)
}
}
impl From<bool> for Consumed {
fn from(consumed: bool) -> Self {
if consumed { Self::Yes } else { Self::No }
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn is_yes_and_is_no_agree_with_the_variant() {
assert!(Consumed::Yes.is_yes());
assert!(!Consumed::Yes.is_no());
assert!(Consumed::No.is_no());
assert!(!Consumed::No.is_yes());
}
#[test]
fn from_bool_maps_true_and_false() {
assert_eq!(Consumed::from(true), Consumed::Yes);
assert_eq!(Consumed::from(false), Consumed::No);
}
}