据我所知,在同一时间可以有多个不可变引用,但如果存在一个可变引用,则它将是唯一的可用引用。
为什么以下代码有效?
fn main() {
let mut y = String::from("bar");
let f: &mut String = &mut y;
let f2: &String = &(*f);
// not allowed since mutable reference already exists
// let f3: &String = &y;
println!("{}, ", f.as_str());
println!("{}", f2.as_str());
}
编辑:我的另一个问题是,我猜想并不明显:为什么我不能创建f3
(如我在注释行中所做的那样),它与f2
完全相同且通过引用y
类似地创建。
f3
时,为什么不被允许,它与f2
完全相同,并通过引用y
类似地创建。