MST

星途 面试题库

面试题:Rust引用可变性在函数参数传递中的复杂场景

编写一个函数,该函数接收一个包含整数的`Vec`的引用。要求函数既能在某些条件下对`Vec`进行修改(添加元素),又能在其他条件下仅读取`Vec`的内容,并且要符合Rust的引用可变性规则。请说明函数参数如何设计以及函数内部如何实现不同操作。
21.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn process_vec(vec_ref: &mut Vec<i32>) {
    if vec_ref.len() < 5 {
        vec_ref.push(42);
    } else {
        for num in vec_ref.iter() {
            println!("Number: {}", num);
        }
    }
}
  1. 函数参数设计
    • 函数参数使用&mut Vec<i32>,这是一个可变引用。通过可变引用,我们既可以读取Vec的内容,也可以在需要时对其进行修改,符合Rust的引用可变性规则。在Rust中,同一时间只能有一个可变引用(除了一些特殊情况,如CellRefCell,这里不涉及),以保证内存安全。
  2. 函数内部实现
    • 在函数内部,首先检查Vec的长度。如果长度小于5,使用push方法向Vec中添加一个元素42。
    • 如果长度大于等于5,使用iter方法对Vec进行遍历,并打印每个元素的值。这样就实现了根据不同条件,对Vec进行修改或仅读取其内容的操作。