配列の各要素を非定数式に初期化する必要があります。最初に配列の各要素を無意味な式に初期化することなく、それを行うことはできますか? これが私ができるようにしたいことの例です:
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
ても、違いはないようです。