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
|
use std::collections::HashMap;
use std::hash::Hash;
trait LowT: Identify {}
trait Identify {
type Id: Clone + Hash + PartialEq + Eq;
fn identify(&self) -> Self::Id;
}
struct MapStore<L, I>
where
L: LowT + Identify<Id = I>,
{
lows: HashMap<I, L>,
}
impl<L, I> MapStore<L, I>
where
L: LowT + Identify<Id = I>,
I: Clone + Hash + PartialEq + Eq,
{
fn remove_low(&mut self, low: &impl LowT) {
let _low = self.lows.remove(low.identify()).unwrap(); //~ ERROR mismatched types
}
}
fn main() {}
|