有没有办法在 Rust 中使用 HashMap 并获取值的向量?

Ish*_*ael 7 hashmap rust

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

我现在的做法是

let v: Vec<SomeValue> = hashmap.values().cloned().collect();
Run Code Online (Sandbox Code Playgroud)

cloned复制每个值,但这种构造不消耗哈希图。我可以消费地图。

有没有办法在不复制它们的情况下获取值?

She*_*ter 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)
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用迭代器做任何您想做的事情,包括将其收集到Vec<_>.

也可以看看: