Коллекции(списки) - это несколько элементов одного типа, которые хранятся в переменой. Типы Массив и Вектор может хранить коллекции. Логика взаимодействия такая что нужно получать данные с коллекции последовательно, итерируя по поэлементно или обращаясь к конкретному элементу.
Итерация (лат. iteratio «повторение») — повторение какого-либо действия.
Массив [ ]
Массив - это пронумерованная коллекция элементов, каждому элементу будет присвоен индекс(число от нуля). Обращаясь к массиву по индексу, мы получаем элемент в соответствующей ячейке. Массив хранит элементы одинакового типа и имеет неизменяемое количество элементов, в отличии от вектора.
Вектор vec![ ]
Вектор - это структура реализует, такой же список элементов как и массив, только может динамически изменять количество элементов. Вектор также хранит данные одного типа. Который указали `<тип>`(generic не тема нашей статьи). Вектор представляет собой объект, то есть можно вызывать, и по индексу, и через методы.
Реализация вектора - создает массив с необходимым количеством элементом и запасное количество ячеек(capacity), после того как элементов станет больше(capacity), вектор создаст массив в двое больше и скопирует прошлый массив в новый и т.д.
Методы:
.push("Элемент") - добавить элемент в конец списка.
.pop() - получить последний элемент из списка, и удаляет последний элемент.
.insert("Элемент", 4) - Вставляет элемент в позицию index внутри вектора, сдвигая все элементы после него вправо.
.remove(4) - Удаляет и возвращает элемент в позиции index внутри вектора, сдвигая все элементы после него влево.
Цикл for
for - это цикл, который при каждой итерации, выполняет код в теле-цикла, для элемента из коллекции. Переменная перед in получает элемент из коллекции, которую можно использовать в теле цикла, будем называть перебором. Нам необязательно использовать этот элемент, можно создать счетчик, для простого дублирования кода. или использовать счетчик как индекс массива для получения данных из массива.
Iterator
Iterator - это структура, которая позволяет выполнять некоторую задачу над последовательностью элементов. В общем случае мы преобразуем другую структуру в структуру итератор.
метод iter() преобразует в ссылку, iter_mut() - тоже только мутабильную, into_iter() -по значению. Итераторы ленивы. Это означает, что простое создание итератора мало что дает. На самом деле ничего не происходит пока ты не вызовешь next(), это следующий элемент.
обратите внимание на такие методы как collect() zip() filter() chain()
- доп материал Функция Rust Map — путь к итераторам