问题描述
我正在尝试将我的代码调整为 a solution to my previous question。基本上,我有一个 HashMap<String,HashSet<String>>
应该由人造丝的 par_extend 生成。问题是键重复,在这种情况下,我希望 HashSet
被组合,而不是被覆盖。换句话说,有没有办法在这里添加一个自定义的impl Extend
,以便下面的代码正确执行?
use std::collections::{HashMap,HashSet};
fn main() {
let mut d: HashMap<String,HashSet<String>> = HashMap::new();
d.extend(vec![1,2].iter().map(|x| {
let mut z = HashSet::new();
z.insert(x.to_string());
return ("a".into(),z);
}));
assert_eq!(d.get("a").unwrap().len(),2);
}
解决方法
因为 orphan rules,你不能。但是,您可以定义一个廉价的包装器,为该包装器实现 https://maven.fabric.io/public
,进行扩展,然后再次解开原始地图。也许是这样的:
Extend