1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
error[E0277]: the trait bound `K: Hash` is not satisfied
--> $DIR/bad-index-due-to-nested.rs:24:5
|
LL | map[k]
| ^^^ the trait `Hash` is not implemented for `K`
|
note: required for `HashMap<K, V>` to implement `Index<&K>`
--> $DIR/bad-index-due-to-nested.rs:11:12
|
LL | impl<K, V> Index<&K> for HashMap<K, V>
| ^^^^^^^^^ ^^^^^^^^^^^^^
LL | where
LL | K: Hash,
| ---- unsatisfied trait bound introduced here
help: consider restricting type parameter `K` with trait `Hash`
|
LL | fn index<'a, K: std::hash::Hash, V>(map: &'a HashMap<K, V>, k: K) -> &'a V {
| +++++++++++++++++
error[E0277]: the trait bound `V: Copy` is not satisfied
--> $DIR/bad-index-due-to-nested.rs:24:5
|
LL | map[k]
| ^^^ the trait `Copy` is not implemented for `V`
|
note: required for `HashMap<K, V>` to implement `Index<&K>`
--> $DIR/bad-index-due-to-nested.rs:11:12
|
LL | impl<K, V> Index<&K> for HashMap<K, V>
| ^^^^^^^^^ ^^^^^^^^^^^^^
...
LL | V: Copy,
| ---- unsatisfied trait bound introduced here
help: consider restricting type parameter `V` with trait `Copy`
|
LL | fn index<'a, K, V: std::marker::Copy>(map: &'a HashMap<K, V>, k: K) -> &'a V {
| +++++++++++++++++++
error[E0308]: mismatched types
--> $DIR/bad-index-due-to-nested.rs:24:9
|
LL | fn index<'a, K, V>(map: &'a HashMap<K, V>, k: K) -> &'a V {
| - found this type parameter
LL | map[k]
| ^ expected `&K`, found type parameter `K`
|
= note: expected reference `&_`
found type parameter `_`
help: consider borrowing here
|
LL | map[&k]
| +
error[E0308]: mismatched types
--> $DIR/bad-index-due-to-nested.rs:24:5
|
LL | fn index<'a, K, V>(map: &'a HashMap<K, V>, k: K) -> &'a V {
| - found this type parameter ----- expected `&'a V` because of return type
LL | map[k]
| ^^^^^^ expected `&V`, found type parameter `V`
|
= note: expected reference `&'a _`
found type parameter `_`
help: consider borrowing here
|
LL | &map[k]
| +
error: aborting due to 4 previous errors
Some errors have detailed explanations: E0277, E0308.
For more information about an error, try `rustc --explain E0277`.
|