I need to initialize each element of an array to a non-constant expression. Can I do that without having to first initialize each element of the array to some meaningless expression? Here's an example of what I'd like to be able to do:
fn foo(xs: &[i32; 1000]) {
    let mut ys: [i32; 1000];
    for (x, y) in xs.iter().zip(ys.iter_mut()) {
        *y = *x / 3;
    }
    // ...
}
This code gives the compile-time error:
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`
To fix the problem, I need to change the first line of the function to initialize the elements of ys with some dummy values like so:
let mut ys: [i32; 1000] = [0; 1000];
Is there any way to omit that extra initialization? Wrapping everything in an unsafe block doesn't seem to make any difference.
 
     
     
    