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

我想从Rust中的两个
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版本,它没有这个方法。请看这个非常类似的问题: