2015-08-03 172 views
2

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

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 { 

什么是标注函数参数的正确方法那是另一个功能?

回答

3

下面的函数签名可能是工作最简单的一个:

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

还有一个section in the book描述此。

相关问题