¿Hay alguna manera de no tener que inicializar matrices dos veces?

Necesito inicializar cada elemento de una matriz a una expresión no constante. ¿Puedo hacer eso sin tener que inicializar cada elemento de la matriz a una expresión sin sentido? Aquí hay un ejemplo de lo que me gustaría poder hacer:

fn foo(xs: &[i32; 1000]) {
    let mut ys: [i32; 1000];

    for (x, y) in xs.iter().zip(ys.iter_mut()) {
        *y = *x / 3;
    }
    // ...
}

Este código da el error en tiempo de compilación:

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`

Para solucionar el problema, necesito cambiar la primera línea de la función para inicializar los elementos deys con algunos valores ficticios como este:

let mut ys: [i32; 1000] = [0; 1000];

¿Hay alguna forma de omitir esa inicialización adicional? Envolviendo todo en ununsafe El bloque no parece hacer ninguna diferencia.

Respuestas a la pregunta(1)

Su respuesta a la pregunta