BorrowCheck › Ядро языка Rust

Коллекции и итераторы

Выбор коллекции, трейт Iterator и ленивость, адаптеры и потребители, collect, формы into_iter, ёмкость.

Тема объясняет выбор коллекции стандартной библиотеки и работу с её элементами через итераторы. Вопросы о коллекциях проверяют, когда подходит Vec, VecDeque, HashMap или BTreeMap, почему ключу нужны Eq и Hash, как entry обходится одним поиском и почему удерживаемая ссылка от get_mut запрещает вставку. Раздел о трейте Iterator разбирает ленивость: адаптер без потребителя ничего не делает, для next нужна изменяемая переменная, а by_ref сохраняет итератор после частичного обхода. Раздел об адаптерах и потребителях охватывает порядок filter и enumerate, поведение take_while, zip и rev, а также переполнение в sum при отладочной сборке. Затем разбираются collect и трейт FromIterator, включая сбор в Result с остановкой на первой ошибке, и различие форм iter, iter_mut и into_iter, в том числе для массивов и цикла for. Последний раздел посвящён ёмкости (capacity) и аллокациям: рост Vec, with_capacity, clear без освобождения памяти и роль size_hint.

41 вопрос: базовый уровень — 22, средний — 17, углублённый — 2. 6 справок, 24 источника.

Разделы

  1. Выбор: Vec, HashMap, BTreeMap
  2. Трейт Iterator и ленивость
  3. Адаптеры и потребители
  4. collect и FromIterator
  5. iter, iter_mut, into_iter
  6. Ёмкость и аллокации

Предыдущая тема: Ассоциированные типы, GAT, const generics · Следующая тема: Замыкания