//下面这样会报错
let mut nums = vec[1,2,3];
//必须要这样定义: 加!
let mut nums = vec![1,2,3];
为什么必须要加! ? ! 在这里是什么作用?
//下面这样会报错
let mut nums = vec[1,2,3];
//必须要这样定义: 加!
let mut nums = vec![1,2,3];
为什么必须要加! ? ! 在这里是什么作用?
引自免费微信小程序:皆我百晓生
在 Rust 中,当你要创建一个可变(mutable)的切片、向量、数组等集合类型的变量时,需要使用 mut
关键字表明这个变量是可修改的。对于向量(Vec<T>
),初始化时使用方括号 []
是一种特殊语法,它会在运行时自动创建并填充一个类型为 T
的元素列表。由于这个特殊的语法已经隐含了对内容的修改,所以当你加上 mut
关键字时,Rust 编译器会认为你在试图两次声明变量的可变性,因此会产生编译错误。
在 Rust 中,感叹号 !
是用于表示函数返回值是引用的一个特殊操作符,称为不安全解借(unsafety)。然而,在我们讨论的上下文中,并不需要使用 !
。正确的写法是:
let mut nums = vec![1, 2, 3];
这里的 vec![1, 2, 3]
使用的是向量推导语法(vector literal),它会创建一个包含指定元素的一维动态数组,并将其赋值给 nums
变量。加上 mut
表示 nums
可以被修改。这就是为什么你需要在 let mut
后面使用花括号 {}
而不是方括号 []
的原因。