-use std::hash::{Hash, Hasher};
-
#[derive(PartialEq, Hash)]
struct Foo;
#[derive(PartialEq)]
struct Bah;
-impl Hash for Bah {
- fn hash<H: Hasher>(&self, _: &mut H) {}
+impl std::hash::Hash for Bah {
+ fn hash<H: std::hash::Hasher>(&self, _: &mut H) {}
+}
+
+#[derive(PartialEq)]
+struct Foo2;
+
+trait Hash {}
+
+// We don't want to lint on user-defined traits called `Hash`
+impl Hash for Foo2 {}
+
+mod use_hash {
+ use std::hash::{Hash, Hasher};
+
+ #[derive(PartialEq)]
+ struct Foo3;
+
+ impl Hash for Foo3 {
+ fn hash<H: std::hash::Hasher>(&self, _: &mut H) {}
+ }
}
fn main() {}
error: you are deriving `Hash` but have implemented `PartialEq` explicitly
- --> $DIR/derive_hash_xor_eq.rs:12:10
+ --> $DIR/derive_hash_xor_eq.rs:10:10
|
LL | #[derive(Hash)]
| ^^^^
|
= note: `#[deny(clippy::derive_hash_xor_eq)]` on by default
note: `PartialEq` implemented here
- --> $DIR/derive_hash_xor_eq.rs:15:1
+ --> $DIR/derive_hash_xor_eq.rs:13:1
|
LL | / impl PartialEq for Bar {
LL | | fn eq(&self, _: &Bar) -> bool {
| |_^
error: you are deriving `Hash` but have implemented `PartialEq` explicitly
- --> $DIR/derive_hash_xor_eq.rs:21:10
+ --> $DIR/derive_hash_xor_eq.rs:19:10
|
LL | #[derive(Hash)]
| ^^^^
|
note: `PartialEq` implemented here
- --> $DIR/derive_hash_xor_eq.rs:24:1
+ --> $DIR/derive_hash_xor_eq.rs:22:1
|
LL | / impl PartialEq<Baz> for Baz {
LL | | fn eq(&self, _: &Baz) -> bool {
| |_^
error: you are implementing `Hash` explicitly but have derived `PartialEq`
- --> $DIR/derive_hash_xor_eq.rs:33:1
+ --> $DIR/derive_hash_xor_eq.rs:31:1
|
-LL | / impl Hash for Bah {
-LL | | fn hash<H: Hasher>(&self, _: &mut H) {}
+LL | / impl std::hash::Hash for Bah {
+LL | | fn hash<H: std::hash::Hasher>(&self, _: &mut H) {}
LL | | }
| |_^
|
note: `PartialEq` implemented here
- --> $DIR/derive_hash_xor_eq.rs:30:10
+ --> $DIR/derive_hash_xor_eq.rs:28:10
|
LL | #[derive(PartialEq)]
| ^^^^^^^^^
-error: aborting due to 3 previous errors
+error: you are implementing `Hash` explicitly but have derived `PartialEq`
+ --> $DIR/derive_hash_xor_eq.rs:49:5
+ |
+LL | / impl Hash for Foo3 {
+LL | | fn hash<H: std::hash::Hasher>(&self, _: &mut H) {}
+LL | | }
+ | |_____^
+ |
+note: `PartialEq` implemented here
+ --> $DIR/derive_hash_xor_eq.rs:46:14
+ |
+LL | #[derive(PartialEq)]
+ | ^^^^^^^^^
+
+error: aborting due to 4 previous errors