我可以这样声明多个常量:
let (a, b, c) = (1, 0.0, 3);
但是为什么我不能使用可变变量呢?
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);
|> ^
最佳答案
正确的语法是
let (mut a, mut b, mut c) = (1, 0.0, 3);
可变性是绑定(bind)的一个属性,
a
,b
和c
都是不同的绑定(bind),在匹配模式之后,每个绑定(bind)都绑定(bind)到元组的特定元素。因此,它们可以单独制成可变的。如果要指定类型,也可以执行以下操作:
let (mut a, mut b, mut c): (u8, f32, i32) = (1, 0.0, 3);
对于数字文字,您也可以使用后缀形式:
let (mut a, mut b, mut c) = (1u8, 0.0f32, 3i32);
当然,示例代码没有理由这样做。仅具有3个单独的语句要简单得多。
这些不是常数,它们只是不可变的变量。
const
是一个不同的概念。关于rust - 如何同时声明多个可变变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38045700/