#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Axis {
Horizontal,
Vertical,
}
impl Axis {
#[inline]
pub fn cross_axis(self) -> Self {
match self {
Axis::Horizontal => Axis::Vertical,
Axis::Vertical => Axis::Horizontal,
}
}
#[inline]
pub fn is_horizontal(self) -> bool {
matches!(self, Axis::Horizontal)
}
#[inline]
pub fn is_vertical(self) -> bool {
matches!(self, Axis::Vertical)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn an_axis_knows_its_own_direction_and_its_cross_axis() {
assert!(Axis::Horizontal.is_horizontal());
assert!(!Axis::Horizontal.is_vertical());
assert!(Axis::Vertical.is_vertical());
assert!(!Axis::Vertical.is_horizontal());
assert_eq!(Axis::Horizontal.cross_axis(), Axis::Vertical);
assert_eq!(Axis::Vertical.cross_axis(), Axis::Horizontal);
assert_eq!(Axis::Horizontal.cross_axis().cross_axis(), Axis::Horizontal);
}
}