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

时间:2015-08-03 12:10:20

标签: 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: | i32, i32 | -> i32, x: i32) -> i32 {

注释作为另一个函数的函数参数的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

以下函数签名可能是最简单的函数签名:

fn call<F: FnOnce(i32, i32) -> i32>(f: F, x: i32) -> i32 {
    ...

还有section in the book来描述这一点。