哪些具体条件为闭合来实现Fn,FnMut和FnOnce特质?
那是:
FnOnce特性?FnMut特性?Fn特性?例如,改变它的主体上的闭包状态会使编译器无法实现Fn它.
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(), …