You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在填充后将Rust中的HashMap设置为不可变?

如何在Rust中将统计完成的HashMap转为不可变

当然可以实现,你只需要重新绑定一个不带mut的变量来接收填充好的HashMap即可,完全不需要第三方库或者函数/闭包。

具体写法如下:

use std::collections::HashMap;

fn main() {
    let s = "hello world hello rust world";
    let mut map = HashMap::new();
    for word in s.split_whitespace() {
        *map.entry(word).or_insert(0) += 1;
    }
    // 重新绑定为不可变变量,完成后原可变绑定失效
    let map = map;
    // 此时map已不可变,尝试修改会触发编译错误
    // map.insert("test", 1); // 取消注释会报错
}

原理很简单:Rust的变量可变性是绑定层面的属性,而非值本身的属性。当你把原本带mut的绑定赋值给新的不带mut的绑定时,新绑定就失去了修改权限,后续代码里无法再对这个HashMap做修改操作,刚好满足统计完成后锁定状态的需求。

内容的提问来源于stack exchange,提问作者user19055902

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:10:35