черта `std :: loan :: Borrow <char>` не реализована для `& str` - PullRequest
0 голосов
/ 02 февраля 2020
let mut map: HashMap<&str, u32> = HashMap::new();

for (i, c) in text.chars().enumerate() {
    if map.contains_key(&c) {
    // Do something
    }
}

черта std::borrow::Borrow<char> не реализована для &str

Мне нужно объяснение этой ошибки и как ее исправить, пожалуйста. Я перебираю все символы в тексте и вставляю те, которых еще нет в хэш-карте, в карту ha sh. Но я продолжаю получать ошибку, как указано выше.

1 Ответ

1 голос
/ 02 февраля 2020

chars - это Iterator, для которого Item = char, поэтому ваш HashMap<&str, u32> не совместим с ним.

&str - это фрагмент строки (в основном последовательность символов), в то время как char является одним символом.

Вы должны решить:

  • Должен ли map действительно отображаться из &str в u32? Или возможно от char? Или, возможно, с &char?
  • Если вы go для &str, вы должны преобразовать элементы chars в &str.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...