有没有一种方法可以使用HashMap并在Rust中获取值的向量?

时间:2020-01-17 20:16:32

标签: rust hashmap

我有一个hashmap: HashMap<SomeKey, SomeValue>,我想使用hashmap并获取其所有值作为矢量。

我现在的方式是

let v: Vec<SomeValue> = hashmap.values().cloned().collect();

cloned复制每个值,但是此构造不占用哈希图。我可以使用地图。

是否可以通过某种方式获取值而不复制它们?

1 个答案:

答案 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<_>中。

另请参阅: