< 返回版块

NeoHee 发表于 2020-08-27 17:14

Tags:rust,借用

fn main() {
    let mut oldStr = "neo".to_string();
    let mut newStr = &mut oldStr;//进行借用
    newStr.push_str(" is cool");//对值进行更新
    println!("oldStr:{}", oldStr);
    println!("newStr:{}", newStr);
    // println!("oldStr:{}", oldStr);//这一行放在下面就可以运行
}
//这样就会报错;说不能将oldStr为不可变引用 但是放到最下面就可以运行

评论区

写评论
作者 NeoHee 2020-08-28 10:10
谢谢你的回答;我觉得应该是借用者的域要小于拥有者的域;不然就会报错

--
👇
z0921: let mut newStr = &mut oldStr; 在这行代码里面,进行可变借用,之后将无法对oldStr进行不可变的引用,除非其可变借用的变量已经注销

作者 NeoHee 2020-08-28 10:07
原来打印的时候也会创造一个&;谢谢!

--
👇
Neutron3529: &mut存在的情况下不能存在其他借用

你的试图打印oldstr的时候,事实上是对已经存在&mut的oldstr创造了一个&

当然报错了

Neutron3529 2020-08-27 17:37

&mut存在的情况下不能存在其他借用

你的试图打印oldstr的时候,事实上是对已经存在&mut的oldstr创造了一个&

当然报错了

z0921 2020-08-27 17:37

let mut newStr = &mut oldStr; 在这行代码里面,进行可变借用,之后将无法对oldStr进行不可变的引用,除非其可变借用的变量已经注销

1 共 4 条评论, 1 页