jcm/function_status/
unit_availability.rs1use std::fmt;
2
3#[repr(u8)]
5#[derive(Clone, Copy, Debug, Eq, PartialEq)]
6pub enum UnitAvailability {
7 Available = 0,
8 NotFunctional = 1,
9}
10
11impl UnitAvailability {
12 pub const fn new() -> Self {
14 Self::Available
15 }
16
17 pub const fn from_u8(val: u8) -> Self {
19 match val & 0x1 {
20 0 => Self::Available,
21 _ => Self::NotFunctional,
22 }
23 }
24
25 pub const fn to_u8(&self) -> u8 {
27 *self as u8
28 }
29}
30
31impl Default for UnitAvailability {
32 fn default() -> Self {
33 Self::new()
34 }
35}
36
37impl From<UnitAvailability> for &'static str {
38 fn from(val: UnitAvailability) -> Self {
39 match val {
40 UnitAvailability::Available => "available",
41 UnitAvailability::NotFunctional => "not functional",
42 }
43 }
44}
45
46impl From<&UnitAvailability> for &'static str {
47 fn from(val: &UnitAvailability) -> Self {
48 (*val).into()
49 }
50}
51
52impl fmt::Display for UnitAvailability {
53 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
54 write!(f, r#""{}""#, <&str>::from(self))
55 }
56}