#[derive(Copy, Clone, Debug, Default, Eq, PartialEq)]
pub enum AllowedSplits {
#[default]
All = 0b11,
LeftRightOnly = 0b10,
TopBottomOnly = 0b01,
None = 0b00,
}
impl std::ops::BitAnd for AllowedSplits {
type Output = Self;
fn bitand(self, rhs: Self) -> Self::Output {
Self::from_u8(self as u8 & rhs as u8)
}
}
impl AllowedSplits {
#[inline(always)]
fn from_u8(u8: u8) -> Self {
match u8 {
0b11 => AllowedSplits::All,
0b10 => AllowedSplits::LeftRightOnly,
0b01 => AllowedSplits::TopBottomOnly,
0b00 => AllowedSplits::None,
_ => panic!("Provided an invalid value for allowed splits: {u8:0x}"),
}
}
}