pierro 0.1.0

An immediate mode UI library for Rust
Documentation

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub enum Axis {
    X,
    Y
}

pub const AXES: [Axis; 2] = [Axis::X, Axis::Y];

impl Axis {

    pub fn other(&self) -> Self {
        match self {
            Axis::X => Axis::Y,
            Axis::Y => Axis::X,
        }
    }

}

#[derive(Clone, Copy)]
pub struct PerAxis<T> {
    pub x: T,
    pub y: T
}

impl<T> PerAxis<T> {

    pub const fn new(x: T, y: T) -> Self {
        Self {
            x,
            y
        }
    }

    pub const fn along_across(axis: Axis, along: T, across: T) -> Self {
        match axis {
            Axis::X => Self::new(along, across),
            Axis::Y => Self::new(across, along)
        }
    }

    pub fn splat(val: T) -> Self where T: Clone {
        Self {
            x: val.clone(),
            y: val 
        }
    }

    pub fn on_axis(&self, axis: Axis) -> &T {
        match axis {
            Axis::X => &self.x,
            Axis::Y => &self.y,
        } 
    }

}