MST

星途 面试题库

面试题:Rust中可变变量在函数参数传递场景的应用

请描述在Rust中,当一个函数需要修改传递进来的变量值时,如何通过可变变量来实现?并给出具体代码示例,同时说明在这种场景下所有权和借用规则是如何体现的。
22.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
  1. 通过可变变量实现函数修改传递进来的变量值
    • 在Rust中,要使函数能够修改传递进来的变量值,需要将参数声明为可变引用。
    • 代码示例如下:
fn modify_variable(num: &mut i32) {
    *num += 1;
}

fn main() {
    let mut number = 5;
    modify_variable(&mut number);
    println!("The modified number is: {}", number);
}
  1. 所有权和借用规则的体现
    • 所有权:在Rust中,每个值都有一个所有者。在上述代码中,number变量在main函数中创建,main函数是number的所有者。
    • 借用
      • 可变借用:当调用modify_variable(&mut number)时,number被可变借用。可变借用意味着在借用期间,只有这个可变引用可以访问和修改该变量,其他任何对该变量的访问都是不允许的,这是为了避免数据竞争。例如,在modify_variable函数执行期间,如果尝试在main函数中再次访问number,编译器会报错。
      • 借用规则:Rust的借用规则确保在任何给定时间,要么只能有一个可变引用(可变借用),要么可以有多个不可变引用(不可变借用),但不能同时存在可变和不可变引用。在这个例子中,modify_variable函数获得了number的可变引用,因此在函数调用期间,其他地方不能再对number进行借用。当函数调用结束,可变借用结束,main函数可以继续使用number