面试题答案
一键面试不可变引用和可变引用规则
- 借用规则:
- 在任何给定时间,要么只能有一个可变引用,要么可以有多个不可变引用。这是为了避免数据竞争,保证内存安全。
- 引用的作用域必须在定义它的作用域内有效。
代码示例
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);
}