use std::{fmt, str::FromStr};
#[derive(Clone, Copy, Debug, PartialEq, Eq, serde::Deserialize)]
pub enum CommandType {
CancelReservation,
ReserveNow,
StartSession,
StopSession,
UnlockConnector,
}
impl fmt::Display for CommandType {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Self::CancelReservation => f.write_str("CANCEL_RESERVATION"),
Self::ReserveNow => f.write_str("RESERVE_NOW"),
Self::StartSession => f.write_str("START_SESSION"),
Self::StopSession => f.write_str("STOP_SESSION"),
Self::UnlockConnector => f.write_str("UNLOCK_CONNECTOR"),
}
}
}
impl FromStr for CommandType {
type Err = String;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"CANCEL_RESERVATION" => Ok(Self::CancelReservation),
"RESERVE_NOW" => Ok(Self::ReserveNow),
"START_SESSION" => Ok(Self::StartSession),
"STOP_SESSION" => Ok(Self::StopSession),
"UNLOCK_CONNECTOR" => Ok(Self::UnlockConnector),
s => Err(format!("invalid CommandType `{}`", s)),
}
}
}