use flagset::{flags, FlagSet};
flags! {
#[allow(missing_docs)]
pub enum TransitionSide: u8 {
LowX,
HighX,
LowY,
HighY,
LowZ,
HighZ,
}
}
pub type TransitionSides = FlagSet<TransitionSide>;
impl TransitionSide {
pub fn none() -> TransitionSides {
TransitionSides::default()
}
pub fn all() -> TransitionSides {
!TransitionSide::none()
}
}
#[cfg(test)]
use rand::{Rng, rngs::StdRng};
#[cfg(test)]
use flagset::Flags;
#[cfg(test)]
pub fn random_sides(rng: &mut StdRng) -> TransitionSides {
let mut sides = TransitionSide::none();
for s in TransitionSide::LIST {
if rng.random_bool(0.5) {
let ss: TransitionSides = (*s).into();
sides |= ss;
}
}
sides
}