我有一个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<_>.
也可以看看: