如何同时声明多个可变变量?

KDN*_*KDN 13 rust

我可以像这样声明多个常量:

let (a, b, c) = (1, 0.0, 3);
Run Code Online (Sandbox Code Playgroud)

但为什么我不能用可变变量做这个呢?

let mut (a, b, c) = (1, 0.0, 3); 抛出编译错误:

error: expected identifier, found `(`
 --> <anon>:2:13
2 |>     let mut (a, b, c) = (1, 0.0, 3);
  |>             ^
Run Code Online (Sandbox Code Playgroud)

She*_*ter 26

正确的语法是

let (mut a, mut b, mut c) = (1, 0.0, 3);
Run Code Online (Sandbox Code Playgroud)

可变性是绑定的属性,并且a,b并且c都是不同的绑定,每个绑定在模式匹配后绑定到元组的特定元素.因此,它们可以单独制成可变的.

如果您想指定类型,您也可以这样做:

let (mut a, mut b, mut c): (u8, f32, i32) = (1, 0.0, 3); 
Run Code Online (Sandbox Code Playgroud)

对于数字文字,您还可以使用后缀形式:

let (mut a, mut b, mut c) = (1u8, 0.0f32, 3i32);
Run Code Online (Sandbox Code Playgroud)

当然,没有理由为示例代码执行此操作; 只有3个单独的语句就简单得多了.

声明多个常量

这些不是常量,它们只是不可变的变量.A const是一个不同的概念.