【发布时间】:2019-07-20 15:14:39
【问题描述】:
如果我想填充一个数字列表,我可以使用向量,因此可以使用堆,这样做:
let w = (0..1024).collect::<Vec<_>>();
但是,如果我想避免堆,我必须使用数组。要使用数组,我必须使用循环,这意味着我必须有一个可变变量:
let mut w = [0u32; 1024];
for i in 0..1024 {
w[i] = i as u32;
}
是否可以在不使用可变变量的情况下填充数组?
此问题已被标记为重复问题。我不确定这怎么可能混淆。
“如何在不使用 mut 的情况下填充数组?”表示如何在不使用可变变量的情况下填充数组。任何mut,而不仅仅是数组变量本身。
“如何创建和初始化不可变数组?”表示如何创建不可变数组。
【问题讨论】:
-
“不使用可变变量”是人为的约束吗?创建数组然后执行
for v in &mut w {或for v in w.iter_mut()似乎是执行此操作的常用方法。另见:stackoverflow.com/q/26185618/1233251 -
当然您可以将可变性限制在嵌套范围内:
let w = { let mut array = ...; ...; array };。 -
@E_net4 如果
w没有被声明为可变的,@E_net4 是否可以工作? -
它没有声明
w是可变的,这就是我问的原因。 -
@E_net4 是的。我避免使用可变变量。