hui_shared/rect/
sides.rs

1
2/// Represents 4 sides of a rectangular shape.
3#[derive(Default, Clone, Copy, PartialEq, Eq, Debug)]
4pub struct Sides<T> {
5  pub top: T,
6  pub bottom: T,
7  pub left: T,
8  pub right: T,
9}
10
11impl<T: Clone> Sides<T> {
12  #[inline]
13  pub fn all(value: T) -> Self {
14    Self {
15      top: value.clone(),
16      bottom: value.clone(),
17      left: value.clone(),
18      right: value,
19    }
20  }
21
22  #[inline]
23  pub fn horizontal_vertical(horizontal: T, vertical: T) -> Self {
24    Self {
25      top: vertical.clone(),
26      bottom: vertical,
27      left: horizontal.clone(),
28      right: horizontal,
29    }
30  }
31}
32
33impl<T: Clone> From<T> for Sides<T> {
34  fn from(value: T) -> Self {
35    Self::all(value)
36  }
37}
38
39impl<T: Clone> From<(T, T)> for Sides<T> {
40  fn from((horizontal, vertical): (T, T)) -> Self {
41    Self::horizontal_vertical(horizontal, vertical)
42  }
43}
44
45impl<T> From<(T, T, T, T)> for Sides<T> {
46  fn from((top, bottom, left, right): (T, T, T, T)) -> Self {
47    Self { top, bottom, left, right }
48  }
49}