Мне нужно инициализировать каждый элемент массива на непостоянное выражение. Могу ли я это сделать без необходимости сначала инициализировать каждый элемент массива каким-либо бессмысленным выражением? Вот пример того, что я хотел бы быть в состоянии сделать:Есть ли способ не инициализировать массивы дважды?
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]: use of possibly uninitialized variable: `ys`
--> src/main.rs:5:37
|
5 | for (x, y) in xs.iter().zip(ys.iter_mut()) {
| ^^ use of possibly uninitialized `ys`
Чтобы устранить эту проблему, нужно изменить первую строку функция для инициализации элементов ys
с некоторыми фиктивными значениями, как так:
let mut ys: [i32; 1000] = [0; 1000];
есть ли способ, чтобы опустить эту дополнительную инициализацию? Обертывание всего в блоке unsafe
, похоже, не имеет никакого значения.