Rust

Iterators & Closures

Iterator trait, iterator adapters (map, filter, fold), składnia closures, move closures, Fn traits

22 pytań z rozmów·
Mid-Level
1

Który trait musi zaimplementować typ, aby można go było użyć w pętli for w Rust?

Odpowiedź

Trait IntoIterator pozwala przekształcić typ w iterator. Pętla for automatycznie wywołuje into_iter() na wyrażeniu. Typy takie jak Vec, tablice i zakresy implementują ten trait domyślnie, co pozwala iterować po nich bezpośrednio za pomocą for.

2

Która metoda traitu Iterator musi zostać zaimplementowana?

Odpowiedź

Metoda next() jest jedyną wymaganą metodą traitu Iterator. Zwraca Option<Self::Item>, czyli Some(item), gdy pozostają elementy, lub None, gdy iteracja się zakończyła. Wszystkie inne metody, takie jak map, filter czy collect, mają domyślne implementacje oparte na next().

3

Jaka jest różnica między iter(), iter_mut() i into_iter() na Vec<T>?

Odpowiedź

iter() zwraca iterator po niemutowalnych referencjach (&T), iter_mut() po mutowalnych referencjach (&mut T), a into_iter() konsumuje Vec i zwraca elementy przez wartość (T). Wybór zależy od tego, czy chcesz odczytać, zmodyfikować, czy przejąć własność elementów.

4

Czym jest leniwy (lazy) iterator w Rust i dlaczego jest ważny?

5

Jaka jest poprawna składnia definiowania closure, która przyjmuje dwa parametry i32 i zwraca ich sumę?

+19 pytań z rozmów

Opanuj Rust na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo