一、move有什么用
当你在闭包前 加上 move 关键字 时,闭包会强制获取 其所需变量的所有 权。这意味着即使在闭包外部变量的所有权 被转移给闭包 ,闭包之外的代码 也不能再使用这些变量
看两段代码
rust
fn main() {
let x = String::from("value");
let closure = || {
println!("x: {}", x);
};
closure(); // 调用闭包
println!("x: {}", x); // 这一行将会导致编译正确,因为变量 x 的所有权没有转移到了闭包内部
}
使用move之后
rust
fn main() {
let x = String::from("value");
let closure = move|| {
println!("x: {}", x);
};
closure(); // 调用闭包
println!("x: {}", x); // 这一行将会导致编译错误,因为变量 x 的所有权已经转移到了闭包内部
}