It makes sense to me that T is a function that takes something of type K and returns type V. But what does it mean that K is of type hash::Hash + Eq + Clone and V is of type Copy. Thanks for any help.
Eq means that two instances of K can be checked for equality, also needed for a HashMap (so collisions can be detected)
Clone means you can duplicate K by cloning it (which may be expensive or may be cheap)
Copy means that you can duplicate V by a simple memcpy, which will happen implicitly if needed when you pass the value around or assign it to a new variable
If it's unclear how these are used in any particular part of the code, please give an example. Or try running the code in the Playground, then remove a bound and see what the compiler error says. (If there isn't an error, the bound wasn't needed.)
Side note: T: Fn(K) -> V is also a trait bound.T could be a closure, a function, a function pointer, etc.