我需要将数组的每个元素初始化为非常量表达式。我是否可以在不必先将数组的每个元素初始化为某些无意义的表达式的情况下实现这一点?以下是我想要实现的示例:
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
块中似乎没有任何作用。