【发布时间】:2018-10-20 20:00:45
【问题描述】:
我正在尝试使用 Rust,但在理解“借用”方面存在问题。
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) 引用必须始终有效。
这种行为的原因是什么?谢谢!
【问题讨论】:
-
"为什么这段代码编译没有错误?" -- It doesn't?
-
是的,我刚刚发布了一个答案,现在才注意到你说它可以编译。你确定吗?
-
是的,它可以编译。
-
无论有没有优化,都无法在稳定版或夜间重现。