Вектор представляет собой динамическую структуру данных, способную хранить список элементов одного типа. Его размеры могут увеличиваться или уменьшаться во время выполнения программы.

Создание вектора в Rust

Создание вектора осуществляется с использованием макроса vec!. Например:
Здесь мы создаем вектор переменной v с начальными значениями [1, 2, 3].
Тип элемента определяется автоматически на основании переданных значений. Так, приведенный выше вектор имеет тип Vec<i32>.
Можно самостоятельно задать тип вектора:
Теперь вектор объявлен как имеющий элементы типа u8.
Альтернатива: инициализация пустого вектора
Также существует альтернативный способ создать пустой вектор:
Затем добавляем элементы с помощью метода push():

Доступ к элементам вектора

Каждый элемент вектора ассоциируется с уникальным индексом. Индексация начинается с нуля, следовательно, первый элемент находится по индексу 0.
Доступ к элементам осуществляется путем обращения к соответствующему индексу. Рассмотрим пример с цветами:
Индексирование выглядит следующим образом:
  • colors[0]: синий (blue)
  • colors[1]: красный (red)
  • colors[2]: зеленый (green)
Альтернативный метод доступа — использование метода get():
Метод возвращает значение типа Option<T> (Some(value) или None), обеспечивая безопасность индексации вне диапазона.
Например, обращение к несуществующему индексу:
Вернет None.

Добавление значений в вектор

Чтобы добавить новые элементы в конец вектора, используем метод push(). Это возможно лишь для изменяемых векторов.
Пример:

Удаление значений из вектора

Удалять элементы можно методом remove(index), удаляя заданный по индексу элемент.
При удалении элемента остальные смещаются, заполняя пробел.

Итерация по элементам вектора

Проход по элементам выполняется с помощью цикла for. Например:
Результат:  
Использование цикла предпочтительнее прямого доступа по индексу, поскольку позволяет избежать проверки границ массива.