面试题答案
一键面试在Rust闭包中,move
关键字用于强制闭包获取捕获变量的所有权,而不是默认的借用。这意味着当闭包获取所有权后,原变量在闭包外将不再可用。
示例代码如下:
fn main() {
let num = 5;
let closure = move || println!("The number is: {}", num);
// 这里如果尝试使用 num 会报错,因为所有权已被闭包获取
// println!("The value of num is: {}", num);
closure();
}
在上述代码中,move
关键字使得闭包closure
获取了num
的所有权。所以在定义闭包之后,num
变量不能在闭包外使用。如果尝试在闭包外使用num
,编译器会报错。而闭包closure
可以正常使用num
,因为它已经拥有了num
的所有权。