如何解决HashMap<_, HashSet<_>> 的递归实现扩展,其中集合组合,而不是覆盖?
我正在尝试将我的代码调整为 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。