不可变引用
不可变引用的概念: 引用的值使用只用不能修改(也叫借用)
fn main() {
//定义变量a
let a = 'A';
let b = 'B';
//借用变量a赋值给变量r(使用&获取变量a的引用,但是不能修改)
let mut r: &char = &a;
//*的意思是解引用,即获取引用的值
println!("r: {}", *r);
r = &b;
println!("r: {}", *r);
}
不可变引用的理解:
- &关键字使用在一个变量上代表获取该变量的引用
- 只能使用值但是不能修改(可以使用但是没有所有权)
- *的意思是解引用,即获取引用的值
可变引用
可变引用的概念:引用的值可以修改(也叫取用)
fn main() {
//定义变量元组是一个可以被借用的元组
let mut point = (1, 2);
//借用元组的第一个值,使用&mut修饰代表获取了元组第0个值的所有权,可以修改元组的第0个值
let x_coord = &mut point.0;
//对可变引用修改
*x_coord = 20;
println!("point: {point:?}");
}
可变引用的理解:
- &mut 关键字使用在变量上代表获取了所有权
- 可以修改变量的值
总结
- 对于同一个变量而言,它的可变引用和不可变引用只能同时存在一个,一个变量不能同时存在可变引用和不可变引用(这是由于Rust的所有权限定的,即变量的所有权只能由一方持有)