use super::types::{Axis, X, Y, Z};
pub trait Frame {
type Next: Frame;
fn frame() -> (Axis<3>, Axis<3>, Axis<3>);
}
#[allow(clippy::upper_case_acronyms)]
pub struct XYZ;
#[allow(clippy::upper_case_acronyms)]
pub struct YZX;
#[allow(clippy::upper_case_acronyms)]
pub struct ZXY;
impl Frame for XYZ {
type Next = YZX;
fn frame() -> (Axis<3>, Axis<3>, Axis<3>) {
(X, Y, Z)
}
}
impl Frame for YZX {
type Next = ZXY;
fn frame() -> (Axis<3>, Axis<3>, Axis<3>) {
(Y, Z, X)
}
}
impl Frame for ZXY {
type Next = XYZ;
fn frame() -> (Axis<3>, Axis<3>, Axis<3>) {
(Z, X, Y)
}
}