![](/img/trans.png)
[英]In Rust, how do I create a HashSet from the keys of a HashMap?
[英]Get HashSet as value from HashMap in Rust
如何獲取 HashMap 的值,它是 Rust 中的 HashSet?
假設我有...
#[derive(PartialEq, Eq, Hash)]
struct A {
name: String,
}
fn main() {
let x: HashMap<i32, HashSet<A>> = HashMap::new();
let y: HashSet<A> = x.values().clone().collect();
}
這給了我以下編譯器錯誤...
HashSet<A>
類型的值不能通過&HashSet<A>
類型的元素的迭代器構建 HashSet HashSet<A>
沒有實現特征FromIterator<&HashSet<A>>
HashSet<T, S>
了特征FromIterator<T>
HashSet<T, S>
rustcE0277 iterator.rs(1832, 19): collect
中的一個界限需要
它不會是單個HashSet
它將是HashSet
的集合,這就是您收到錯誤的原因
let x: HashMap<i32, HashSet<A>> = HashMap::new();
let y: Vec<&HashSet<A>> = x.values().clone().collect();
如果要從HashMap<i32, HashSet<A>>
創建單個HashSet<A>
> 值的一種做法如下:
let z: HashSet<&A> = x.values().clone().fold(HashSet::new(), |mut accum, item| {
accum.extend(item);
accum
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.