Есть ли способ не инициализировать массивы дважды?
Мне нужно инициализировать каждый элемент массива неконстантным выражением. Могу ли я сделать это без предварительной инициализации каждого элемента массива каким-либо бессмысленным выражением? Вот пример того, что я хотел бы сделать:
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
блок, кажется, не имеет никакого значения.