如何从Rust中的函数返回函数?

时间:2016-12-21 17:58:36

标签: rust

我目前拥有并尝试过:

fn locate_func() -> fn() -> bool {
    func_exit()
}

上面的代码显示了我想要完成的任务。我希望以我认为可能是指针的形式返回func_exit,无论变量绑定可能决定它需要特定代码,以及一旦我检索了我想要运行它的函数。但我确信我可以自己弄清楚运行部分。

&func_exit()

我试过了,但你肯定知道只是简单地评估函数然后返回指向堆栈上布尔值的指针。

*&func_exit()
&*func_exit() // or

我相信在某些时候我在Rust书中看到了类似的东西,但我在这种情况下尝试了这两种组合,并尝试用括号以不同的方式做同样的事情,但仍然评估了首先是函数,然后指向计算的布尔值。

1 个答案:

答案 0 :(得分:5)

括号表示“使用这些参数调用函数”。不要这样做:

fn func_exit() -> bool {
    println!("hi");
    true
}

fn locate_func() -> fn() -> bool {
    func_exit
}

fn main() {
    let f = locate_func();
    f();
}

相关但不同:Returning a closure from a function