]> git.lizzy.rs Git - rust.git/commitdiff
auto merge of #8439 : huonw/rust/hashset-clone, r=cmr
authorbors <bors@rust-lang.org>
Wed, 14 Aug 2013 09:38:19 +0000 (02:38 -0700)
committerbors <bors@rust-lang.org>
Wed, 14 Aug 2013 09:38:19 +0000 (02:38 -0700)
Closes #5581.

src/libstd/hashmap.rs

index 7a22477685911cf9ee0a52afdc9f882b1ce3f49d..201d4692694650158124b87df403d610b5579591 100644 (file)
@@ -745,6 +745,14 @@ pub fn union_iter<'a>(&'a self, other: &'a HashSet<T>)
 
 }
 
+impl<T:Hash + Eq + Clone> Clone for HashSet<T> {
+    fn clone(&self) -> HashSet<T> {
+        HashSet {
+            map: self.map.clone()
+        }
+    }
+}
+
 impl<K: Eq + Hash, T: Iterator<K>> FromIterator<K, T> for HashSet<K> {
     fn from_iterator(iter: &mut T) -> HashSet<K> {
         let (lower, _) = iter.size_hint();
@@ -1190,4 +1198,22 @@ fn test_move_iter() {
         let v = hs.move_iter().collect::<~[char]>();
         assert!(['a', 'b'] == v || ['b', 'a'] == v);
     }
+
+    #[test]
+    fn test_eq() {
+        let mut s1 = HashSet::new();
+        s1.insert(1);
+        s1.insert(2);
+        s1.insert(3);
+
+        let mut s2 = HashSet::new();
+        s2.insert(1);
+        s2.insert(2);
+
+        assert!(s1 != s2);
+
+        s2.insert(3);
+
+        assert_eq!(s1, s2);
+    }
 }