Ich muss jedes Element eines Arrays zu einem nicht konstanten Ausdruck initialisieren. Kann ich das tun, ohne jedes Element des Arrays zuerst mit einem bedeutungslosen Ausdruck initialisieren zu müssen? Hier ist ein Beispiel dafür, was ich möchte in der Lage sein zu tun:Gibt es eine Möglichkeit, Arrays nicht zweimal initialisieren zu müssen?
fn foo(xs: &[i32; 1000]) {
let mut ys: [i32; 1000];
for (x, y) in xs.iter().zip(ys.iter_mut()) {
*y = *x/3;
}
// ...
}
Dieser Code gibt die Fehler bei der Kompilierung:
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`
Um das Problem zu beheben muss ich die erste Zeile ändern die Funktion, die Elemente von ys
mit einigen Dummy-Werte zu initialisieren, etwa so:
let mut ys: [i32; 1000] = [0; 1000];
gibt es eine Möglichkeit, dass zusätzliche Initialisierung wegzulassen? Alles in einem unsafe
Block zu verpacken scheint keinen Unterschied zu machen.