我有一个hashmap: HashMap<SomeKey, SomeValue>
,我想使用hashmap
并获取其所有值作为矢量。
我现在的方式是
let v: Vec<SomeValue> = hashmap.values().cloned().collect();
cloned
复制每个值,但是此构造不占用哈希图。我可以使用地图。
是否可以通过某种方式获取值而不复制它们?
答案 0 :(得分:11)
将整个HashMap
转换为迭代器并丢弃键:
use std::collections::HashMap;
fn only_values<K, V>(map: HashMap<K, V>) -> impl Iterator<Item = V> {
map.into_iter().map(|(_k, v)| v)
}
然后,您可以使用迭代器进行任何操作,包括将其收集到Vec<_>
中。
另请参阅: