基本概念
Rust的所有权(ownership)机制规定:Rust中的每个值都有一个被称为其所有者(owner)的变量,并且有且只能有唯一的所有者。
Rust中的引用(references)允许使用值但不获取其所有权,这种操作也被称为所有权借用(borrowing)。通过&T
和&mut T
将引用分为两种:
不可变引用(
&T
),也被称为共享引用,所有者可以读取引用指向的数据,但不能修改数据。可变引用(
&mut T
)也被称为独占引用,不能有别名,在同一时刻,同一个值不可能存在别的引用。
fn main() {
let mut s = String::from("hello");
let r1 = &mut s;
let r2 = &mut s; // ERROR: 可变引用,不能有别名
println!("{}, {}", r1, r2);
let x = 1;
let y = &mut x; // ERROR: 当有一个不可变值时,不能可变的借用它
}
Rust内存安全性基于以下规则:给定对象T,则只能具有以下之一:
对象有几个不可变的引用(