我知道在Rust中不能同时创建两个可变引用指向同一个对象。但我不完全理解为什么以下代码是有效的:
fn main() {
let mut string = String::from("test");
let mutable_reference: &mut String = &mut string;
mutable_reference.push_str(" test");
// as I understand it, this creates a new mutable reference (2nd?)
test(&mut *mutable_reference);
println!("{}", mutable_reference);
}
fn test(s: &mut String) {
s.push_str(" test");
}
mutable_reference
的生命周期始于其定义,并且仅在主作用域结束时才超出范围。但是,在reborrow之间,它创建了一个匿名的可变借用,其生命周期是test
函数的作用域。那么这两个生命周期之间是否存在交集,其中存在两个对字符串的可变引用? - raj