MST

星途 面试题库

面试题:Rust中引用可变性的基本规则及应用

在Rust中,简述不可变引用和可变引用的规则。假设有一个结构体`Point { x: i32, y: i32 }`,请编写代码展示如何通过不可变引用和可变引用分别读取和修改结构体中的字段。
42.3万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

不可变引用和可变引用规则

  1. 借用规则
    • 在任何给定时间,要么只能有一个可变引用,要么可以有多个不可变引用。这是为了避免数据竞争,保证内存安全。
    • 引用的作用域必须在定义它的作用域内有效。

代码示例

struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let mut p = Point { x: 1, y: 2 };

    // 不可变引用读取字段
    let ref_to_p = &p;
    println!("通过不可变引用读取: x = {}, y = {}", ref_to_p.x, ref_to_p.y);

    // 可变引用修改字段
    let mut ref_to_mut_p = &mut p;
    ref_to_mut_p.x = 3;
    ref_to_mut_p.y = 4;
    println!("通过可变引用修改后: x = {}, y = {}", ref_to_mut_p.x, ref_to_mut_p.y);
}