簡體   English   中英

從 Rust 中的 HashMap 獲取 HashSet 作為值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM