2015-08-03 174 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描述此。

相關問題