gpt4 book ai didi

rust - 为什么不能使用方括号 [ ] 表示法更新 HashMap 中的值?

转载 作者:行者123 更新时间:2023-11-29 08:15:26 25 4
gpt4 key购买 nike

<分区>

我用 Rust 编写了一个“计算字符串中所有字符出现次数”的函数,但是更新/添加值不适用于括号表示法。这是为什么?

有效的是:

use std::collections::HashMap;

fn main() {
let myString = "Go ahead and count all my characters";

let mut myMap = HashMap::new();

for ch in myString.chars() {
*myMap.entry(ch).or_insert(0) += 1;
}
}

不起作用的是:

for ch in myString.chars() {
myMap.entry(ch).or_insert(0);
*myMap[&ch] += 1;
}

在后一种情况下,编译器会报错:

error[E0614]: type `{integer}` cannot be dereferenced
--> src/main.rs:10:9
|
10 | *myMap[&ch] += 1;
| ^^^^^^^^^^^

这是有道理的,因为它们被复制并存储在堆栈中(如果我理解正确的话),但是如果您不尝试取消引用该值,您也不能将它们加 1。看起来第一个版本是我唯一的选择;那是对的吗?为什么它在那里起作用?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com