use crate::{WallSwitchError, WallSwitchResult};
use serde::{Deserialize, Serialize};
use std::{fmt, str::FromStr};
#[derive(Debug, Default, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Orientation {
#[default]
Horizontal,
Vertical,
}
impl fmt::Display for Orientation {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{self:?}")
}
}
impl FromStr for Orientation {
type Err = WallSwitchError;
fn from_str(s: &str) -> WallSwitchResult<Self> {
match s.trim().to_lowercase().as_str() {
"horizontal" => Ok(Self::Horizontal),
"vertical" => Ok(Self::Vertical),
_ => Err(WallSwitchError::InvalidOrientation),
}
}
}