在Rust中指定方法作为参数(Vec sort()方法)

在Rust中指定方法作为参数(Vec sort()方法),rust,Rust,我不知道如何将sort方法作为参数提供给这里的Vec实现 我的代码是从这个问题中可以找到的代码中得到启发的,但是不会编译 下面是我想做的一些示例代码 fn传递\排序(列表:&mut-Vec,排序\函数:F) 其中F:Fn(&mut-Vec) { 排序函数(列表); } fn main(){ 让mut列表:Vec=Vec![3,2,1]; 传递\排序(&mut list,Vec::sort); } 这里是错误 error[E0599]: no function or associated ite

我不知道如何将
sort
方法作为参数提供给这里的
Vec
实现

我的代码是从这个问题中可以找到的代码中得到启发的,但是不会编译

下面是我想做的一些示例代码

fn传递\排序(列表:&mut-Vec,排序\函数:F)
其中F:Fn(&mut-Vec)
{
排序函数(列表);
}
fn main(){
让mut列表:Vec=Vec![3,2,1];
传递\排序(&mut list,Vec::sort);
}
这里是错误

error[E0599]: no function or associated item named `sort` found for struct `std::vec::Vec<_>` in the current scope
 --> stak_test.rs:9:31
  |
9 |     pass_sort(&mut list, Vec::sort);
  |                               ^^^^ function or associated item not found in `std::vec::Vec<_>`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0599`.
error[E0599]:在当前作用域中找不到结构'std::vec::vec'的名为'sort'的函数或关联项
-->stak_测试,rs:9:31
|
9 |传递|排序(&mut list,Vec::sort);
|^std::vec::vec中未找到函数或关联项`
错误:由于上一个错误而中止
有关此错误的详细信息,请尝试“rustc--explain E0599”。
我猜这是因为
sort
不是
Vec
的方法,而是文档中解释的
Deref
实现的方法,但我不知道如何从这个范围访问该方法:/

我猜这是因为sort不是Vec的方法,而是Deref的方法

这是正确的,该方法来自,因此您需要使用它:

fn传递\排序(列表:&mut-Vec,排序\函数:F)
哪里
F:Fn(&mut[i32]),
{
排序函数(列表);
}
fn main(){
让mut列表:Vec=Vec![3,2,1];
传递\排序(&mut list,::排序);
}

Owwww thaaanks:),我尝试了这一行
pass\u sort(&mut list,::sort)
但我在函数签名中缺少参数类型
&mut[i32]
。除了答案中的内容之外,另一个选项是使用闭包:
pass_sort(&mut list,| v | v.sort())
。由于Rust的闭包是零成本的(尽可能内联),我希望它能生成完全相同的代码。