面试题答案
一键面试fn outer() {
let num = 5;
let inner = || {
println!("The value of num is: {}", num);
};
inner();
}
在Rust中,这种引用捕获遵循闭包对环境变量的捕获规则。闭包可以捕获其定义所在环境中的变量,对于num
,这里捕获的方式是按值捕获。因为num
是Copy
类型(i32
实现了Copy
trait),闭包在捕获num
时会将其值复制一份到闭包的环境中,而不是获取其所有权或借用。如果num
类型没有实现Copy
trait,闭包会按所有权方式捕获num
,即将num
的所有权转移到闭包中,外部函数就不能再使用num
了。