工具是用于功能编程有用功能的抓斗袋包括使得递归闭合 ,例如:
extern crate tool;
use tool::prelude::*;
fn main() {
let fib = fix(move |f, x| {
if x == 0 || x == 1 {
x
} else {
// `f` is `fib`
f(x - 1) + f(x - 2)
}
});
println!("{}", fib(10)); // print 55
}
事情要实现是在这里: 游乐场
这里的概述:我定义function A
内搭一件function B
作为参数,再次function B
取function C
作为参数。 我需要调用function C
使用一个新的线程,在这种情况下, &dyn
的内部函数的关键字给我一个错误:
fn a(b: impl Fn(&dyn Fn() -> ()) -> ()) -> () {
// ...
}
error[E0277]: `dyn std::ops::Fn() ->()` cannot be shared between threads safely
我试着像下面的语法,但是这给了我一个另一个错误:
fn a(b: impl Fn(impl Fn() -> ()) -> ()) -> () {
// ...
}
error[E0666]: nested `impl Trait` is not allowed
--> src/main.rs:2:21
|
2 | fn a(b: impl Fn(impl Fn() -> ()) -> ()) -> () {
| --------^^^^^^^^^^^^^^^-------
| | |
| | nested `impl Trait` here
| outer `impl Trait`