相关疑难解决方法(0)

闭包何时实现Fn,FnMut和FnOnce?

哪些具体条件为闭合来实现Fn,FnMutFnOnce特质?

那是:

  • 闭包什么时候没有实现这个FnOnce特性?
  • 闭包什么时候没有实现这个FnMut特性?
  • 闭包什么时候没有实现这个Fn特性?

例如,改变它的主体上的闭包状态会使编译器无法实现Fn它.

closures rust

97
推荐指数
2
解决办法
1万
查看次数

无法移出Fn闭包中捕获的外部变量

fn make_adder(x: String) -> Box<Fn() -> String> {
    Box::new(|| x)
}

fn main() {
    make_adder(String::from("a"));
}
Run Code Online (Sandbox Code Playgroud)

这导致此错误:

fn make_adder(x: String) -> Box<Fn() -> String> {
    Box::new(|| x)
}

fn main() {
    make_adder(String::from("a"));
}
Run Code Online (Sandbox Code Playgroud)

我该如何纠正?

rust

9
推荐指数
1
解决办法
1193
查看次数

我什么时候需要使闭包变量可变?

为什么我需要使这个闭包变量可变?闭包不返回任何内容,因此闭包变量中没有存储任何内容。这个闭包只是从环境中捕获一个值并递增它。

fn main() {
    let mut x = 1;
    let mut y = || x = x + 1;
    y();
    println!("{}", x);
}
Run Code Online (Sandbox Code Playgroud)

closures rust

2
推荐指数
1
解决办法
274
查看次数

标签 统计

rust ×3

closures ×2