如何生成提供返回值的回调函数

Win*_*ton 0 rust

我想创建一个回调函数。下面的代码不起作用,但它显示了我想要做的事情。这是我在 Rust Playground 中损坏的程序的链接。

fn use_callback(callback: fn()) -> i32 {
  return callback();
}

fn callback() -> i32 {
  return 2;
}

fn main() {
  println!("Result: {:?}", use_callback(callback));
}
Run Code Online (Sandbox Code Playgroud)

预期的结果应该是Result: 2。

man*_*055 6

您只需要将函数中的回调类型更改use_callback为返回i32.

fn use_callback(callback: fn() -> i32) -> i32 {
                           //  ^^^^^^ here 
    return callback();
}
fn callback() -> i32 {
    return 2;
}
fn main() {
    println!("Result: {:?}", use_callback(callback));
}
Run Code Online (Sandbox Code Playgroud)

铁锈游乐场