跟着谷歌学习Rust:第六课-不可变引用/可变引用

99 阅读1分钟

不可变引用

不可变引用的概念: 引用的值使用只用不能修改(也叫借用)

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的所有权限定的,即变量的所有权只能由一方持有)

参考

google.github.io/comprehensi…