Wie sammle ich Elemente eines Iterators in ein Array fester Größe in Rust?
Hallo zusammen! Ich habe kürzlich angefangen, Rust zu lernen, und bin auf ein Problem gestoßen, das sehr einfach erscheint, aber ich finde keine richtige Lösung.
Ich habe einen Iterator, der eine Sequenz von Zahlen zurückgibt. Ich möchte all diese Zahlen in einem Array [i32; N] sammeln, wobei N zur Kompilierzeit bekannt ist. Zum Beispiel schreibe ich eine Funktion, die einen Slice von Zahlen nimmt und ein Array aus den ersten 5 Elementen zurückgibt:
fn first_five(data: &[i32]) -> [i32; 5] {
data.iter().take(5).collect() // funktioniert nicht!
}
Der Compiler gibt einen Fehler aus: the trait bound `[i32; 5]: FromIterator<&i32>` is not satisfied. Ich verstehe, dass collect() mit Sammlungen wie Vec funktioniert, aber wie bringe ich es dazu, mit Arrays zu arbeiten?
Ich habe versucht, den Typ explizit anzugeben: let arr: [i32; 5] = data.iter().take(5).collect(); — aber das hilft auch nicht. In anderen Sprachen (Python, JavaScript) macht man das in einer Zeile, hier muss ich schreiben
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen