about summary refs log tree commit diff
path: root/src/libstd/collections
diff options
context:
space:
mode:
authorSteven Fackler <sfackler@gmail.com>2014-06-05 23:22:01 -0700
committerAlex Crichton <alex@alexcrichton.com>2014-06-06 19:51:37 -0700
commitb662aa5ec0eb1971111bf10f9c3ef2a8f226bb0a (patch)
treeee2a681c4dc49a85a38eac5745b5f94e123c28d4 /src/libstd/collections
parent1bde6e3fcb32ca00cf8a8dfa0977e47f7f4a77bf (diff)
downloadrust-b662aa5ec0eb1971111bf10f9c3ef2a8f226bb0a.tar.gz
rust-b662aa5ec0eb1971111bf10f9c3ef2a8f226bb0a.zip
Implement Eq for HashSet and HashMap
Also fix documentation references to PartialEq.
Diffstat (limited to 'src/libstd/collections')
-rw-r--r--src/libstd/collections/hashmap.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/libstd/collections/hashmap.rs b/src/libstd/collections/hashmap.rs
index 5dba7a533a1..571c5794704 100644
--- a/src/libstd/collections/hashmap.rs
+++ b/src/libstd/collections/hashmap.rs
@@ -684,8 +684,8 @@ impl DefaultResizePolicy {
 /// denial-of-service attacks (Hash DoS). This behaviour can be
 /// overridden with one of the constructors.
 ///
-/// It is required that the keys implement the `PartialEq` and `Hash` traits, although
-/// this can frequently be achieved by using `#[deriving(PartialEq, Hash)]`.
+/// It is required that the keys implement the `Eq` and `Hash` traits, although
+/// this can frequently be achieved by using `#[deriving(Eq, Hash)]`.
 ///
 /// Relevant papers/articles:
 ///
@@ -1422,6 +1422,8 @@ impl<K: Eq + Hash<S>, V: PartialEq, S, H: Hasher<S>> PartialEq for HashMap<K, V,
     }
 }
 
+impl<K: Eq + Hash<S>, V: Eq, S, H: Hasher<S>> Eq for HashMap<K, V, H> {}
+
 impl<K: Eq + Hash<S> + Show, V: Show, S, H: Hasher<S>> Show for HashMap<K, V, H> {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         try!(write!(f, r"\{"));
@@ -1486,7 +1488,7 @@ pub type SetMoveItems<K> =
 
 /// An implementation of a hash set using the underlying representation of a
 /// HashMap where the value is (). As with the `HashMap` type, a `HashSet`
-/// requires that the elements implement the `PartialEq` and `Hash` traits.
+/// requires that the elements implement the `Eq` and `Hash` traits.
 #[deriving(Clone)]
 pub struct HashSet<T, H = sip::SipHasher> {
     map: HashMap<T, (), H>
@@ -1500,6 +1502,8 @@ impl<T: Eq + Hash<S>, S, H: Hasher<S>> PartialEq for HashSet<T, H> {
     }
 }
 
+impl<T: Eq + Hash<S>, S, H: Hasher<S>> Eq for HashSet<T, H> {}
+
 impl<T: Eq + Hash<S>, S, H: Hasher<S>> Container for HashSet<T, H> {
     fn len(&self) -> uint { self.map.len() }
 }