cranpose_ui_layout/
axis.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum Axis {
8 Horizontal,
12
13 Vertical,
17}
18
19impl Axis {
20 #[inline]
22 pub fn cross_axis(self) -> Self {
23 match self {
24 Axis::Horizontal => Axis::Vertical,
25 Axis::Vertical => Axis::Horizontal,
26 }
27 }
28
29 #[inline]
31 pub fn is_horizontal(self) -> bool {
32 matches!(self, Axis::Horizontal)
33 }
34
35 #[inline]
37 pub fn is_vertical(self) -> bool {
38 matches!(self, Axis::Vertical)
39 }
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn an_axis_knows_its_own_direction_and_its_cross_axis() {
48 assert!(Axis::Horizontal.is_horizontal());
49 assert!(!Axis::Horizontal.is_vertical());
50 assert!(Axis::Vertical.is_vertical());
51 assert!(!Axis::Vertical.is_horizontal());
52
53 assert_eq!(Axis::Horizontal.cross_axis(), Axis::Vertical);
54 assert_eq!(Axis::Vertical.cross_axis(), Axis::Horizontal);
55 assert_eq!(Axis::Horizontal.cross_axis().cross_axis(), Axis::Horizontal);
56 }
57}