about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexis Beingessner <a.beingessner@gmail.com>2014-08-18 16:59:52 -0400
committerAlexis Beingessner <a.beingessner@gmail.com>2014-08-18 17:05:26 -0400
commitdcccf824b1096cc596671724ebf42b8d3ed35705 (patch)
tree662c4941b393ef9c644cd428ab0c5233891c3896
parent40c45169b7b280bbe27380fc5f1c350d25946ec2 (diff)
downloadrust-dcccf824b1096cc596671724ebf42b8d3ed35705.tar.gz
rust-dcccf824b1096cc596671724ebf42b8d3ed35705.zip
Fixing bitvset is_disjoint, fixes #16587
-rw-r--r--src/libcollections/bitv.rs20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/libcollections/bitv.rs b/src/libcollections/bitv.rs
index 800f9832226..6f973bb741e 100644
--- a/src/libcollections/bitv.rs
+++ b/src/libcollections/bitv.rs
@@ -1522,7 +1522,7 @@ impl Set<uint> for BitvSet {
 
     #[inline]
     fn is_disjoint(&self, other: &BitvSet) -> bool {
-        self.intersection(other).count() > 0
+        self.intersection(other).next().is_none()
     }
 
     #[inline]
@@ -2265,6 +2265,24 @@ mod tests {
     }
 
     #[test]
+    fn test_bitv_set_is_disjoint() {
+        let a = BitvSet::from_bitv(from_bytes([0b10100010]));
+        let b = BitvSet::from_bitv(from_bytes([0b01000000]));
+        let c = BitvSet::new();
+        let d = BitvSet::from_bitv(from_bytes([0b00110000]));
+
+        assert!(!a.is_disjoint(&d));
+        assert!(!d.is_disjoint(&a));
+
+        assert!(a.is_disjoint(&b))
+        assert!(a.is_disjoint(&c))
+        assert!(b.is_disjoint(&a))
+        assert!(b.is_disjoint(&c))
+        assert!(c.is_disjoint(&a))
+        assert!(c.is_disjoint(&b))
+    }
+
+    #[test]
     fn test_bitv_set_intersect_with() {
         // Explicitly 0'ed bits
         let mut a = BitvSet::from_bitv(from_bytes([0b10100010]));