我有以下 Rust 程序,我希望它会因为后面重新赋值了变量
x
而导致编译错误。但实际上程序能够编译并输出结果。这是为什么呢?fn main() {
let (x, y) = (1, 3);
println!("X is {} and Y is {}", x, y);
let x: i32 = 565;
println!("Now X is {}", x);
}
let y = x
。 - Alecfoo: Option<u32>
,我会立即使用let foo = foo.unwrap_or(0)
来解包它。这样可以避免我需要为此变量想出一个新的名称,也可以防止未来的维护者需要思考要使用哪个外观类似的变量。 - Peter Hall