Коллекции и итераторы
Выбор коллекции, трейт 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 источника.
Разделы
- Выбор:
Vec,HashMap,BTreeMap - Трейт
Iteratorи ленивость - Адаптеры и потребители
collectиFromIteratoriter,iter_mut,into_iter- Ёмкость и аллокации
Предыдущая тема: Ассоциированные типы, GAT, const generics · Следующая тема: Замыкания