The BitOrAssign trait enables the |= operator for data types that implement it.
Implementing BitOrAssign looks like this:
pub enum BitExample {
Yes,
No,
}
impl BitOrAssign for BitExample {
fn bitor_assign(&mut self, other: BitExample) {
*self = match (&self, other) {
(BitExample::Yes, BitExample::Yes) => BitExample::Yes,
(BitExample::No, BitExample::Yes) => BitExample::Yes,
(BitExample::Yes, BitExample::No) => BitExample::Yes,
(BitExample::No, BitExample::No) => BitExample::No,
};
}
}