Вы читаете устаревшую версию TRPL. Новая версия здесь.

% Вектора

«Вектор» — это динамический или, по-другому, «растущий» массив, реализованный в виде стандартного библиотечного типа Vec<T> (где <T> является обобщённым типом). Вектора всегда размещают данные в куче. Вы можете создавать их с помощью макроса vec!:


#![allow(unused)]
fn main() {
let v = vec![1, 2, 3, 4, 5]; // v: Vec<i32>
}

(Заметьте, что, в отличие от макроса println!, который мы использовали ранее, с vec! используются квадратные скобки []. Rust разрешает использование и круглых, и квадратных скобок в обеих ситуациях — это просто стилистическое соглашение.)

Для создания вектора из повторяющихся значений есть другая форма vec!:


#![allow(unused)]
fn main() {
let v = vec![0; 10]; // десять нулей
}

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

Чтобы получить значение по определенному индексу в векторе, мы используем []:


#![allow(unused)]
fn main() {
let v = vec![1, 2, 3, 4, 5];

println!("Третий элемент вектора v равен {}", v[2]);
}

Индексы отсчитываются от 0, так что третьим элементом является v[2].

Обход

Вы можете обойти элементы вектора с помощью for. Есть три варианта:


#![allow(unused)]
fn main() {
let mut v = vec![1, 2, 3, 4, 5];

for i in &v {
    println!("Ссылка {}", i);
}

for i in &mut v {
    println!("Изменяемая ссылка {}", i);
}

for i in v {
    println!("Владение вектором и его элементами {}", i);
}
}

У векторов есть много других полезных методов, о которых вы можете прочитать в документации API.