从Map中获取解引用键



我想用u32键获取BTreeMap的键。

当我使用.iter().keys()方法时,它返回对键的引用:&u32

我理解获得对键的引用背后的逻辑,因为它不消耗数据结构,但由于u32实现了Copy特性,我认为有可能直接获得u32

我发现这样做的唯一方法是映射所有的键并解引用它们:

let map = BTreeMap::from([
(0, "foo"),
(1, "bar"),
(2, "baz")
])
let keys: Vec<u32> = map.iter().map(|(k, _)| *k).collect();

是否有更好、更快或更简洁的方法来做到这一点?

我建议要么

let keys = map.keys().copied().collect();

或者如果您不再需要该地图:

let keys = map.into_keys().collect();

最新更新