Rust

Iterators & Closures

Iterator trait, iterator adapters (map, filter, fold), синтаксис closure, move closures, Fn traits

22 питань зі співбесід·
Mid-Level
1

Який trait має реалізувати тип, щоб його можна було використати в циклі for у Rust?

Відповідь

Trait IntoIterator дозволяє перетворити тип на ітератор. Цикл for автоматично викликає into_iter() для виразу. Типи на кшталт Vec, масивів і діапазонів реалізують цей trait за замовчуванням, що дозволяє обходити їх безпосередньо за допомогою for.

2

Який метод trait Iterator обов'язково має бути реалізований?

Відповідь

Метод next() — єдиний обов'язковий метод trait Iterator. Він повертає Option<Self::Item>: або Some(item), якщо залишилися елементи, або None, коли ітерація завершена. Усі інші методи на кшталт map, filter чи collect мають реалізації за замовчуванням на основі next().

3

У чому різниця між iter(), iter_mut() та into_iter() для Vec<T>?

Відповідь

iter() повертає ітератор по незмінних посиланнях (&T), iter_mut() — по змінних посиланнях (&mut T), а into_iter() споживає Vec і повертає елементи за значенням (T). Вибір залежить від того, чи хочете ви читати, змінювати чи отримати власність над елементами.

4

Що таке lazy ітератор у Rust і чому це важливо?

5

Який правильний синтаксис для визначення closure, що приймає два параметри i32 і повертає їхню суму?

+19 питань зі співбесід

Опануй Rust для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно