我想用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();