diff options
Diffstat (limited to 'vendor/fixedbitset/src/block/default.rs')
| -rw-r--r-- | vendor/fixedbitset/src/block/default.rs | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/vendor/fixedbitset/src/block/default.rs b/vendor/fixedbitset/src/block/default.rs new file mode 100644 index 00000000..7fc460fb --- /dev/null +++ b/vendor/fixedbitset/src/block/default.rs @@ -0,0 +1,70 @@ +use core::ops::{BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Not}; + +#[derive(Copy, Clone, PartialEq, Debug)] +#[repr(transparent)] +pub struct Block(pub(super) usize); + +impl Block { + #[inline] + pub const fn is_empty(self) -> bool { + self.0 == Self::NONE.0 + } + + #[inline] + pub fn andnot(self, other: Self) -> Self { + Self(!other.0 & self.0) + } +} + +impl Not for Block { + type Output = Block; + #[inline] + fn not(self) -> Self::Output { + Self(self.0.not()) + } +} + +impl BitAnd for Block { + type Output = Block; + #[inline] + fn bitand(self, other: Self) -> Self::Output { + Self(self.0.bitand(other.0)) + } +} + +impl BitAndAssign for Block { + #[inline] + fn bitand_assign(&mut self, other: Self) { + self.0.bitand_assign(other.0); + } +} + +impl BitOr for Block { + type Output = Block; + #[inline] + fn bitor(self, other: Self) -> Self::Output { + Self(self.0.bitor(other.0)) + } +} + +impl BitOrAssign for Block { + #[inline] + fn bitor_assign(&mut self, other: Self) { + self.0.bitor_assign(other.0) + } +} + +impl BitXor for Block { + type Output = Block; + #[inline] + fn bitxor(self, other: Self) -> Self::Output { + Self(self.0.bitxor(other.0)) + } +} + +impl BitXorAssign for Block { + #[inline] + fn bitxor_assign(&mut self, other: Self) { + self.0.bitxor_assign(other.0) + } +} |
