Hashmap, поддерживающий String и &str

Как определить HashMap, поддерживающий как String, так и &str в своем ключе и содержимом? Я пробовал следующее:

fn mapping<T: Into<String>>() -> HashMap<T, T> {
  let mut map: HashMap<T, T> = HashMap::new();
  map.insert("first_name", "MyFirstName");
  map.insert("last_name".to_string(), "MyLastName".to_string());
  map
}

fn main() {
  let mut mapping = mapping();
}

Но он не компилируется, говоря:

error[E0599]: no method named `insert` found for type `std::collections::HashMap<T, T>` in the current scope
error[E0277]: the trait bound `T: std::cmp::Eq` is not satisfied
error[E0277]: the trait bound `T: std::hash::Hash` is not satisfied

person Jimmy Chu    schedule 20.06.2019    source источник


Ответы (1)