MST

星途 面试题库

面试题:Rust嵌套函数中引用捕获的基础规则考察

在Rust中,假设有一个外部函数定义了一个局部变量`let num = 5;`,然后在这个外部函数内部定义一个嵌套函数,在嵌套函数中尝试引用`num`。请写出代码示例,并解释该引用捕获遵循的规则是什么。
45.3万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn outer() {
    let num = 5;
    let inner = || {
        println!("The value of num is: {}", num);
    };
    inner();
}

在Rust中,这种引用捕获遵循闭包对环境变量的捕获规则。闭包可以捕获其定义所在环境中的变量,对于num,这里捕获的方式是按值捕获。因为numCopy类型(i32实现了Copy trait),闭包在捕获num时会将其值复制一份到闭包的环境中,而不是获取其所有权或借用。如果num类型没有实现Copy trait,闭包会按所有权方式捕获num,即将num的所有权转移到闭包中,外部函数就不能再使用num了。