8
我有下面的Rust程序,我期望它会导致编译错误,因为x
将在稍后重新分配。但它符合并提供输出。为什么?为什么这个Rust程序忽略不变性
fn main() {
let (x, y) = (1, 3);
println!("X is {} and Y is {}", x, y);
let x: i32 = 565;
println!("Now X is {}", x);
}
为什么这是允许的语言?这不会导致逻辑错误不容易在大型程序中出现吗?阴影的目的是什么?有没有其他语言使用这些概念? – Viraj
如何引用一个以前被遮蔽的变量? – Dai
@Dai我不认为你可以......你总是可以将所有权交给另一个变量'let y = x'。 – Alec