没有为`&str`

时间:2020-02-02 10:47:34

标签: rust traits borrow-checker

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

我需要解释此错误以及如何解决该错误。我正在遍历文本中的每个字符,并将哈希图中尚未存在的字符插入到哈希图中。但是我仍然收到如上所述的错误。

1 个答案:

答案 0 :(得分:1)

charsIterator的{​​{1}},因此您的Item = char与之不兼容。

HashMap<&str, u32>是一个字符串切片(本质上是一个字符序列),而&str是单个字符。

您必须决定:

  • char应该真正从map映射到&str吗?还是可能来自u32?还是可能来自char
  • 如果您要使用&char,则必须将&str的元素转换为chars