Rust 不能将's'作为不可变项借用,因为它也是作为可变项借用的
我遇到了无法改变的借用问题。不可变借用发生在“println!(“{}”,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
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代码>打印项后面的行。谢谢,收到了。任何时候,都应该只有一个可变借用