Rust 小锈菌结合的不变性

Rust 小锈菌结合的不变性,rust,immutability,let,Rust,Immutability,Let,我认为let应该是一个不可变的绑定。 那么为什么正确的代码可以工作呢?(分配a两次) 货物运行的结果是: Guess the number! From a 1 - 100 inclusive [1, 2, 3, 4, 5] 1 2 3 a正在运行 在同一块中执行此操作的格式不正确。您的代码或多或少与此等效: let first_a = [1, 2, 3, 4, 5]; println! ("{:?}", first_a); let (second_a, b, c) = (1,2,3); pr

我认为
let
应该是一个不可变的绑定。 那么为什么正确的代码可以工作呢?(分配
a
两次)

货物运行的结果是:

Guess the number! From a 1 - 100 inclusive
[1, 2, 3, 4, 5]
1
2
3
a
正在运行


在同一块中执行此操作的格式不正确。

您的代码或多或少与此等效:

let first_a = [1, 2, 3, 4, 5];
println! ("{:?}", first_a);

let (second_a, b, c) = (1,2,3);
println! ("{:?}", second_a);
println! ("{:?}", b);
println! ("{:?}", c);

第二个
a
是一个全新的变量。第一个
a
一旦创建了第二个,就不能再访问了。

可能的重复我不会说它普遍不好;描述了一些可能的用途。当这些值没有紧密联系时,就像OP的例子中那样,这是令人困惑的。
let a = 5;
a = 6; // not allowed

let a = 5;
let a = 6; //allowed
let first_a = [1, 2, 3, 4, 5];
println! ("{:?}", first_a);

let (second_a, b, c) = (1,2,3);
println! ("{:?}", second_a);
println! ("{:?}", b);
println! ("{:?}", c);