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)
我该如何纠正?
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 ×2