生锈的不变性让绑定

问题描述 投票:2回答:2

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

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

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

货运的结果是:

Guess the number! From a 1 - 100 inclusive
[1, 2, 3, 4, 5]
1
2
3
rust immutability let
2个回答
1
投票

您的代码或多或少等同于此:

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,就不再可以访问它了。


0
投票

a正在加入shadowed

let a = 5;
a = 6; // not allowed

let a = 5;
let a = 6; //allowed

在这样的同一个块中执行此操作的错误形式。

© www.soinside.com 2019 - 2024. All rights reserved.