【发布时间】:2019-05-18 18:21:02
【问题描述】:
我正在尝试习惯impl Fn,但我不明白这段代码的错误:
fn y(state: bool) -> impl Fn() -> impl Fn(bool) -> bool {
move || {
println!("state, {}", state);
|x: bool| {
println!("state, {}", state);
!x
}
}
}
fn main() {
y(true)()(true);
}
错误是:
error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
--> src/main.rs:1:35
|
1 | fn y(state: bool) -> impl Fn() -> impl Fn(bool) -> bool {
| ^^^^^^^^^^^^^^^^^^^^^
- 为什么第一个
impl Fn允许,第二个不允许? - 如何在不使用堆的情况下做到这一点(通过
Box等)?
【问题讨论】: