相关疑难解决方法(0)

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

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

那是:

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

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

closures rust

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

什么时候应该将mut添加到闭包中?

fn main() {
    let mut a = String::from("a");
    let closure = || {
        a.push_str("b");
    };

    closure();
}
Run Code Online (Sandbox Code Playgroud)

这不会编译:

error[E0596]: cannot borrow immutable local variable `closure` as mutable
 --> src/main.rs:7:5
  |
3 |     let closure = || {
  |         ------- consider changing this to `mut closure`
...
7 |     closure();
  |     ^^^^^^^ cannot borrow mutably
Run Code Online (Sandbox Code Playgroud)

如果我a在闭包中返回而不添加mut,则可以编译:

fn main() {
    let mut a = String::from("a");
    let closure = || {
        a.push_str("b");
        a
    };

    closure();
}
Run Code Online (Sandbox Code Playgroud)

这让我很困惑.似乎在我打电话的时候closure(), …

rust

8
推荐指数
1
解决办法
571
查看次数

标签 统计

rust ×2

closures ×1