Вектора

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

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

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

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

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

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

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

fn main() { let v = vec![1, 2, 3, 4, 5]; println!("Третий элемент вектора v равен {}", v[2]); }
let v = vec![1, 2, 3, 4, 5];

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

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

Обход

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

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); } }
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.