Lambda 将函数作为参数传递给另一个函数

Lambda 将函数作为参数传递给另一个函数,lambda,rust,Lambda,Rust,我想将一个函数作为参数传递给另一个函数: fn call(f: | i32, i32 | -> i32, x: i32) -> i32 { f(x, x) } fn main() { let res = call(| x, y | { x + y }, 4); println!("{}", res); } 我得到这个错误: main.rs:1:12: 1:13 error: expected type, found `|` main.rs:1 fn call(f: |

我想将一个函数作为参数传递给另一个函数:

fn call(f: | i32, i32 | -> i32, x: i32) -> i32 {
  f(x, x)
}

fn main() {
  let res = call(| x, y | { x + y }, 4);
  println!("{}", res);
}
我得到这个错误:

main.rs:1:12: 1:13 error: expected type, found `|`
main.rs:1 fn call(f: | i32, i32 | -> i32, x: i32) -> i32 {

对另一个函数的函数参数进行注释的正确方法是什么?

以下函数签名可能是最简单的有效方法:

fn call<F: FnOnce(i32, i32) -> i32>(f: F, x: i32) -> i32 {
    ...
fn调用i32>(f:f,x:i32)->i32{
...
还有一个例子描述了这一点