Rust 不能将's'作为不可变项借用,因为它也是作为可变项借用的

Rust 不能将's'作为不可变项借用,因为它也是作为可变项借用的,rust,immutability,mutable,Rust,Immutability,Mutable,我遇到了无法改变的借用问题。不可变借用发生在“println!(“{}”,s);”中,但后来我不再使用不可变借用值 我有: fn main() { let mut s = String::from("hello"); let r3 = &mut s; println!("{} ", s); *r3 = String::from("hello world"); } 它在抱怨: error[E050

我遇到了无法改变的借用问题。不可变借用发生在“println!(“{}”,s);”中,但后来我不再使用不可变借用值

我有:

fn main() {
    let mut s = String::from("hello");
    let r3 = &mut s;
    println!("{} ", s);
    *r3 = String::from("hello world");
}
它在抱怨:

error[E0502]: cannot borrow `s` as immutable because it is also borrowed as mutable
  --> src/main.rs:31:21
   |
30 |     let r3 = &mut s;
   |              ------ mutable borrow occurs here
31 |     println!("{} ", s);
   |                     ^ immutable borrow occurs here
32 |     *r3 = String::from("hello world");
   |     --- mutable borrow later used here


在铁锈中,你不能做这样的事。任何东西都有一个主人,只能存在于一个地方

检查代码:

fn main(){
让mut s=String::from(“hello”);//创建字符串
设r3=&mut s;//将are引用存储在'r3'变量中。
///这与删除s(在此范围内)几乎相同
println!(“{}”,s);//这仅在r3再次超出范围时才起作用。
*r3=String::from(“hello world”);//我不完全理解这句话。
}
因此,让代码段编译的一件事是在
r3
变量周围添加一个作用域

fn main(){
让mut s=String::from(“hello”);//创建字符串
{
设r3=&mut s;/`r3`仅在范围内有效,并且`s`在大括号之间移动(无效)。
}
//现在s再次有效。因为“&mut r3”引用超出范围,意味着已删除。
println!(“{}”,s);
//创建了一个完全不相关的新“r3”
设r3=String::from(“hello world”);//只读r3
}

问题不在于以后是否重用不可变借用,问题在于在不可变借用之前有一个可变借用,在不可变借用之后使用该可变借用。移动
让r3=&mut s打印项后面的行。谢谢,收到了。任何时候,都应该只有一个可变借用