Wie man einen Iterator (oder ein anderes Trait) korrekt aus einer Funktion in Rust zurückgibt
Hallo Kollegen! Ich habe angefangen, Rust zu lernen, und bin auf ein Problem gestoßen, das mir sehr seltsam vorkommt. Ich versuche, eine Funktion zu schreiben, die einen Iterator zurückgibt, aber der Compiler beschwert sich ständig.
Hier ist, was ich tun möchte: Ich habe einen Vektor von Zahlen und möchte die geraden Zahlen filtern und einen Iterator darüber zurückgeben. Ich habe diesen Code geschrieben:
```rust
fn get_even_numbers(numbers: Vec) -> Iterator- {
numbers.into_iter().filter(|&x| x % 2 == 0)
}
```
Aber der Compiler gibt einen Fehler aus:
```
error[E0277]: the size for values of type `(dyn Iterator
- + 'static)` cannot be known at compilation time
```
Ich verstehe, dass Traits keine Typen mit fester Größe sind, aber wie gibt man dann korrekt einen Iterator zurück? Ich habe gesehen, dass an manchen Stellen `Box
>` verwendet wird, aber das wirkt wie ein Workaround. Gibt es vielleicht einen idiomatischeren Weg?
Außerdem interessiert mich, wie es mit anderen Traits ist, zum Beispiel wenn ich ein `Display` oder `Clone` zurückgeben möchte. Gibt es
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs
Wie man zwei Objekte in JavaScript zusammenführt: 5 beste Methoden
YouTube API: Wie man ein Video-Thumbnail erhält und nicht auf die Nase fällt
Android Activity aus anderer App starten: Komplettguide für Kotlin
CLI-Tools mit PHP: Konsolenanwendungen von Grund auf erstellen