小编And*_*eux的帖子

为什么看起来我可以使用不可变的BTreeMap中的值?

我正在进行一项练习练习,其中我需要反转拼字游戏分数的地图; 得分地图=>字母成为字母地图=>得分.我想出了以下Rust代码:

use std::collections::BTreeMap;

pub fn transform(h: &BTreeMap<i32, Vec<char>>) -> BTreeMap<char, i32> {
    h.iter()
        .flat_map(|(&score, letters)| {
            letters
                .into_iter()
                .map(move |l| (l.to_ascii_lowercase(), score))
        })
        .collect()
}
Run Code Online (Sandbox Code Playgroud)

这有效,但事后我意识到它不应该.h是一个不可变的引用.h.iter()迭代对其条目的引用,该条目应具有类型(&i32, &Vec<char>),但随后我将Vec使用它并使用它into_iter().Rust并没有抱怨,尽管它是一个不可改变的引用.

我在这里错过了什么?

iterator immutability rust

4
推荐指数
1
解决办法
55
查看次数

标签 统计

immutability ×1

iterator ×1

rust ×1