MST

星途 面试题库

面试题:Rust中变量不可变特性在函数参数传递中的应用优势

在Rust中,当函数接收不可变变量作为参数时,相较于可变变量参数传递,有哪些应用优势?请结合示例代码说明,例如编写一个计算两个整数之和的函数,分别使用不可变和可变参数的情况进行对比。
11.6万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
  1. 不可变变量作为参数的优势
    • 安全性:不可变变量在函数内部不能被修改,这有助于防止意外的修改,增强代码的安全性和可预测性。例如,在多线程环境中,如果一个变量被多个线程共享且不可变,就不用担心某个线程意外修改它而导致数据竞争等问题。
    • 简单性:函数只专注于使用传入的数据,而不用考虑数据被修改的情况,使得函数逻辑更加简单清晰。
  2. 示例代码
    • 使用不可变参数
fn add_immutable(a: i32, b: i32) -> i32 {
    a + b
}
  • 使用可变参数
fn add_mutable(a: &mut i32, b: &mut i32) -> i32 {
    *a += 1;
    *b += 1;
    *a + *b
}
  • 调用示例
fn main() {
    let num1 = 2;
    let num2 = 3;
    let result_immutable = add_immutable(num1, num2);
    println!("不可变参数结果: {}", result_immutable);

    let mut num3 = 2;
    let mut num4 = 3;
    let result_mutable = add_mutable(&mut num3, &mut num4);
    println!("可变参数结果: {}", result_mutable);
    println!("num3 被修改后的值: {}", num3);
    println!("num4 被修改后的值: {}", num4);
}

在上述代码中,add_immutable函数使用不可变参数,函数内部不会对参数进行修改,调用者可以明确知道参数不会被改变。而add_mutable函数使用可变参数,函数内部对参数进行了修改,调用者需要注意这种修改可能带来的影响。