¿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.