我正在尝试Rust编程语言,但在理解"borrowing"(借用)方面遇到了问题。
struct Foo<T> {
data: T,
}
impl<T> Foo<T> {
fn new(data: T) -> Self {
Foo {
data: data,
}
}
}
fn main() {
let mut foo = Foo::new("hello");
let x = &mut foo;
let y = &mut foo;
println!("{}", foo.data);
}
为什么这段代码可以编译通过?毕竟,我对
foo
得到了多个可变引用。下面是文档中的说明:
引用规则让我们回顾一下有关引用的讨论:
a) 在任何时候,您可以拥有一个可变引用或任意数量的不可变引用(但不能同时拥有两者)。
b) 引用必须始终有效。
为什么会出现这种行为?谢谢!