问答详情
源自:3-4 引用和借用

引用赋值变量报错

fn main() {

    let mut s = String::from("any");

    let a = &mut s;

    a.push_str("!");

    println!("{} {}", a, s);

}

上述代码报错(s变量immutable borrow occurs here)
是不是因为视频里说的“同一时间最多只能存在一个可变引用”?
请教老师!


----------------

写成如下

fn main() {

    let mut s = String::from("any");

    let a = &mut s;

    a.push_str("!");

    println!("{}", a);

    println!("{}", s);

}

即可输出两个any!

提问者:打小就给力 2021-04-22 13:54

个回答

  • 你高兴的太早了
    2022-08-14 15:55:27

    http://img2.mukewang.com/62f8a97c0001bcbd00690069.jpg
    http://img4.mukewang.com/62f8a97c0001a31f01750175.jpg
    彩云小译 刚刚
    http://img.mukewang.com/62f8a97c00016f7700460047.jpg0
    http://img3.mukewang.com/62f8a97c00010a8700690069.jpg
    在一个作用域内,只允许一个活跃的可变引用。活跃:真正被用来修改数据的可变引用,如果只是定义了,却没有使用或者当作只读引用使用,不算活跃。http://img1.mukewang.com/62f8a97c0001187102110212.jpg