summaryrefslogtreecommitdiff
path: root/vendor/fixedbitset/src/block/default.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/fixedbitset/src/block/default.rs')
-rw-r--r--vendor/fixedbitset/src/block/default.rs70
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)
+ }
+}