MST

星途 面试题库

面试题:Rust中FnMut trait与可变闭包的基础使用

请说明在Rust中,FnMut trait与可变闭包之间的关系,并编写一个使用可变闭包且涉及FnMut trait的简单示例代码,解释代码中FnMut trait是如何起作用的。
48.2万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
  1. FnMut trait与可变闭包的关系
    • 在Rust中,可变闭包(mutable closure)是一种闭包类型,它可以捕获其环境中的变量,并可以对这些变量进行可变访问。
    • FnMut trait是Rust中闭包实现的三个核心trait之一。实现了FnMut trait的闭包可以通过可变引用来调用,这意味着闭包在调用时可以修改其捕获的环境中的变量。可变闭包自动实现FnMut trait,因为可变闭包允许修改其捕获的变量,这与FnMut trait的功能相匹配。
  2. 示例代码
fn main() {
    let mut num = 5;
    let mut inc = |x| {
        num += x;
        num
    };
    let result = inc(3);
    println!("The result is: {}", result);
}
  1. 代码中FnMut trait的作用解释
    • 在上述代码中,inc是一个可变闭包。它捕获了num变量,并在闭包内部对其进行修改。
    • 因为inc是可变闭包,Rust自动为它实现了FnMut trait。当调用inc(3)时,实际上是通过FnMut trait提供的功能来进行调用的。FnMut trait允许闭包以可变引用的方式访问其捕获的变量(这里是num),从而使得闭包内部可以修改num的值。如果没有FnMut trait的支持,这种对捕获变量的可变访问和修改操作是不被允许的。