mirror of https://github.com/rust-lang/rust
28 lines
539 B
Rust
28 lines
539 B
Rust
use std::hash::Hash;
|
|
use std::marker::PhantomData;
|
|
use std::ops::Index;
|
|
|
|
struct HashMap<K, V>(PhantomData<(K, V)>);
|
|
|
|
impl<K, V> Index<&K> for HashMap<K, V>
|
|
where
|
|
K: Hash,
|
|
V: Copy,
|
|
{
|
|
type Output = V;
|
|
|
|
fn index(&self, k: &K) -> &V {
|
|
todo!()
|
|
}
|
|
}
|
|
|
|
fn index<'a, K, V>(map: &'a HashMap<K, V>, k: K) -> &'a V {
|
|
map[k]
|
|
//~^ ERROR the trait bound `K: Hash` is not satisfied
|
|
//~| ERROR the trait bound `V: Copy` is not satisfied
|
|
//~| ERROR mismatched types
|
|
//~| ERROR mismatched types
|
|
}
|
|
|
|
fn main() {}
|