这个Rust闭包参数语法是什么意思?

这个Rust闭包参数语法是什么意思?,rust,closures,destructuring,Rust,Closures,Destructuring,我修改了在internet上找到的代码,创建了一个函数,用于获取实现Eq的任何哈希类型的统计模式,但我不理解其中的一些语法。以下是函数: 使用std::hash::hash; 使用std::collections::HashMap; pub fn mode.max_by_key(|&(|,count)| count)相当于.max_by_key(f),其中f是: fn f<T>(t: &(T, usize)) -> usize { (*t).1 } 而f2()

我修改了在internet上找到的代码,创建了一个函数,用于获取实现Eq的任何哈希类型的统计模式,但我不理解其中的一些语法。以下是函数:

使用std::hash::hash;
使用std::collections::HashMap;
pub fn mode
.max_by_key(|&(|,count)| count)
相当于
.max_by_key(f)
,其中f是:

fn f<T>(t: &(T, usize)) -> usize {
    (*t).1
}
f2()
更接近您所询问的第一个闭包


第二个闭包本质上是相同的,只是没有任何参考文件使事情稍微复杂化。

是的,它的模式匹配用于分解结构。当您的类型为
&(124;,count)
时,
.max_by_键(|&(124;,count)| count)
相当于
.max_by_键(| v | v.1)
。它让你在闭包中有一个更干净的名字,而不是使用
.1
访问。相关:是的,这个相关的问题很有帮助,特别是关于对可复制类型和解构的限制。may_by_key是一个函数,它接受带有一个参数的闭包,该参数是对包含两个元素的元组的引用。闭包什么也不做,只返回元组中的第二个元素。
fn f2<T>(&(_, count): &(T, usize)) -> usize {
    count
}