我需要将数组的每个元素初始化为非常量表达式。我可以这样做而不必先将数组的每个元素初始化为一些无意义的表达式吗?这是我想要做的一个例子:
fn foo(xs: &[i32; 1000]) {
let mut ys: [i32; 1000];
for (x, y) in xs.iter().zip(ys.iter_mut()) {
*y = *x / 3;
}
// ...
}
此代码给出了编译时错误:
error[E0381]: borrow of possibly uninitialized variable: `ys`
--> src/lib.rs:4:33
|
4 | for (x, y) in xs.iter().zip(ys.iter_mut()) {
| ^^ use of possibly uninitialized `ys`
要解决此问题,我需要更改函数的第一行以ys
使用一些虚拟值初始化 的元素,如下所示:
let mut ys: [i32; 1000] = [0; 1000];
有没有办法省略额外的初始化?将所有内容包装在一个unsafe
块中似乎没有任何区别。