Rust 习惯性地取消对映射键的引用
我想从Rust中的两个Rust 习惯性地取消对映射键的引用,rust,Rust,我想从Rust中的两个HashMaps的键中得到两个HashSets。我的代码如下所示: let mut wire1_map: HashMap<(i32, i32), u32> = HashMap::new(); get_route(&mut wire1_map, &wire1); let mut wire2_map: HashMap<(i32, i32), u32> = HashMap::new(); get_route(&mut wire2_m
HashMap
s的键中得到两个HashSet
s。我的代码如下所示:
let mut wire1_map: HashMap<(i32, i32), u32> = HashMap::new();
get_route(&mut wire1_map, &wire1);
let mut wire2_map: HashMap<(i32, i32), u32> = HashMap::new();
get_route(&mut wire2_map, &wire2);
let wire1_set: HashSet<(i32, i32)> = wire1_map.keys().map(|x| *x).collect();
let wire2_set: HashSet<(i32, i32)> = wire2_map.keys().map(|x| *x).collect();
let is = wire1_set.intersection(&wire2_set);
let m_dist = is.map(|ele| calc_distance((0, 0), *ele)).min().unwrap();
让mut wire1_-map:HashMap=HashMap::new();
获取路线(&mut wire1\U map,&wire1);
让mut wire2_-map:HashMap=HashMap::new();
获取路径(&mut wire2)地图(&wire2);
设wire1_集:HashSet=wire1_映射.keys().map(|x |*x.collect();
设wire2_集:HashSet=wire2_map.keys().map(|x |*x.collect();
设is=wire1\u集。交点(&wire2\u集);
设m|u dist=is.map(| ele | calc_distance((0,0),*ele)).min().unwrap();
我想获取HashSet
s以使用intersection()
代码运行,但我的问题是:
- 一般来说,这是惯用的防锈代码吗
- 是否有一种更简单(更惯用)的方法来取消对地图每个键的引用
.copied()
而不是.map(|x |*x)
,则会更为惯用,除非您使用的是没有该方法的稍旧版本的Rust。请看这个非常类似的问题:使用.copied()
而不是.map(|x |*x)
,会更为惯用,除非你使用的是一个稍微旧一点的Rust版本,它没有这个方法。请看这个非常类似的问题: