error: impl for `HashMap` should be generalized over different hashers
  --> $DIR/implicit_hasher.rs:16:35
   |
LL | impl<K: Hash + Eq, V> Foo<i8> for HashMap<K, V> {
   |                                   ^^^^^^^^^^^^^
   |
note: the lint level is defined here
  --> $DIR/implicit_hasher.rs:2:9
   |
LL | #![deny(clippy::implicit_hasher)]
   |         ^^^^^^^^^^^^^^^^^^^^^^^
help: consider adding a type parameter
   |
LL | impl<K: Hash + Eq, V, S: ::std::hash::BuildHasher + Default> Foo<i8> for HashMap<K, V, S> {
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^             ^^^^^^^^^^^^^^^^
help: ...and use generic constructor
   |
LL |         (HashMap::default(), HashMap::with_capacity_and_hasher(10, Default::default()))
   |          ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: impl for `HashMap` should be generalized over different hashers
  --> $DIR/implicit_hasher.rs:25:36
   |
LL | impl<K: Hash + Eq, V> Foo<i8> for (HashMap<K, V>,) {
   |                                    ^^^^^^^^^^^^^
   |
help: consider adding a type parameter
   |
LL | impl<K: Hash + Eq, V, S: ::std::hash::BuildHasher + Default> Foo<i8> for (HashMap<K, V, S>,) {
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^              ^^^^^^^^^^^^^^^^
help: ...and use generic constructor
   |
LL |         ((HashMap::default(),), (HashMap::with_capacity_and_hasher(10, Default::default()),))
   |           ^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: impl for `HashMap` should be generalized over different hashers
  --> $DIR/implicit_hasher.rs:30:19
   |
LL | impl Foo<i16> for HashMap<String, String> {
   |                   ^^^^^^^^^^^^^^^^^^^^^^^
   |
help: consider adding a type parameter
   |
LL | impl<S: ::std::hash::BuildHasher + Default> Foo<i16> for HashMap<String, String, S> {
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^              ^^^^^^^^^^^^^^^^^^^^^^^^^^
help: ...and use generic constructor
   |
LL |         (HashMap::default(), HashMap::with_capacity_and_hasher(10, Default::default()))
   |          ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: impl for `HashSet` should be generalized over different hashers
  --> $DIR/implicit_hasher.rs:47:32
   |
LL | impl<T: Hash + Eq> Foo<i8> for HashSet<T> {
   |                                ^^^^^^^^^^
   |
help: consider adding a type parameter
   |
LL | impl<T: Hash + Eq, S: ::std::hash::BuildHasher + Default> Foo<i8> for HashSet<T, S> {
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^             ^^^^^^^^^^^^^
help: ...and use generic constructor
   |
LL |         (HashSet::default(), HashSet::with_capacity_and_hasher(10, Default::default()))
   |          ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: impl for `HashSet` should be generalized over different hashers
  --> $DIR/implicit_hasher.rs:52:19
   |
LL | impl Foo<i16> for HashSet<String> {
   |                   ^^^^^^^^^^^^^^^
   |
help: consider adding a type parameter
   |
LL | impl<S: ::std::hash::BuildHasher + Default> Foo<i16> for HashSet<String, S> {
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^              ^^^^^^^^^^^^^^^^^^
help: ...and use generic constructor
   |
LL |         (HashSet::default(), HashSet::with_capacity_and_hasher(10, Default::default()))
   |          ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: parameter of type `HashMap` should be generalized over different hashers
  --> $DIR/implicit_hasher.rs:69:23
   |
LL | pub fn foo(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32>) {}
   |                       ^^^^^^^^^^^^^^^^^
   |
help: consider adding a type parameter
   |
LL | pub fn foo<S: ::std::hash::BuildHasher>(_map: &mut HashMap<i32, i32, S>, _set: &mut HashSet<i32>) {}
   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^            ^^^^^^^^^^^^^^^^^^^^

error: parameter of type `HashSet` should be generalized over different hashers
  --> $DIR/implicit_hasher.rs:69:53
   |
LL | pub fn foo(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32>) {}
   |                                                     ^^^^^^^^^^^^
   |
help: consider adding a type parameter
   |
LL | pub fn foo<S: ::std::hash::BuildHasher>(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32, S>) {}
   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                          ^^^^^^^^^^^^^^^

error: impl for `HashMap` should be generalized over different hashers
  --> $DIR/implicit_hasher.rs:73:43
   |
LL |         impl<K: Hash + Eq, V> Foo<u8> for HashMap<K, V> {
   |                                           ^^^^^^^^^^^^^
...
LL | gen!(impl);
   | ----------- in this macro invocation
   |
   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider adding a type parameter
   |
LL |         impl<K: Hash + Eq, V, S: ::std::hash::BuildHasher + Default> Foo<u8> for HashMap<K, V, S> {
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^             ^^^^^^^^^^^^^^^^
help: ...and use generic constructor
   |
LL |                 (HashMap::default(), HashMap::with_capacity_and_hasher(10, Default::default()))
   |                  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: parameter of type `HashMap` should be generalized over different hashers
  --> $DIR/implicit_hasher.rs:81:33
   |
LL |         pub fn $name(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32>) {}
   |                                 ^^^^^^^^^^^^^^^^^
...
LL | gen!(fn bar);
   | ------------- in this macro invocation
   |
   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider adding a type parameter
   |
LL |         pub fn $name<S: ::std::hash::BuildHasher>(_map: &mut HashMap<i32, i32, S>, _set: &mut HashSet<i32>) {}
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^            ^^^^^^^^^^^^^^^^^^^^

error: parameter of type `HashSet` should be generalized over different hashers
  --> $DIR/implicit_hasher.rs:81:63
   |
LL |         pub fn $name(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32>) {}
   |                                                               ^^^^^^^^^^^^
...
LL | gen!(fn bar);
   | ------------- in this macro invocation
   |
   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider adding a type parameter
   |
LL |         pub fn $name<S: ::std::hash::BuildHasher>(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32, S>) {}
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                          ^^^^^^^^^^^^^^^

error: aborting due to 10 previous errors

