Вектора
«Вектор» — это динамический или, по-другому, «растущий» массив, реализованный в
виде стандартного библиотечного типа [Vec<T>
]vec (где <T>
является
обобщённым типом). Вектора всегда размещают данные в куче. Вы можете
создавать их с помощью макроса vec!
:
let v = vec![1, 2, 3, 4, 5]; // v: Vec<i32>
(Заметьте, что, в отличие от макроса println!
, который мы использовали ранее,
с vec!
используются квадратные скобки []
. Rust разрешает использование и
круглых, и квадратных скобок в обеих ситуациях — это просто стилистическое
соглашение.)
Для создания вектора из повторяющихся значений есть другая форма vec!
:
let v = vec![0; 10]; // десять нулей
Доступ к элементам
Чтобы получить значение по определенному индексу в векторе, мы используем []
:
let v = vec![1, 2, 3, 4, 5];
println!("Третий элемент вектора v равен {}", v[2]);
Индексы отсчитываются от 0
, так что третьим элементом является v[2]
.
Обход
Вы можете обойти элементы вектора с помощью for
. Есть три варианта:
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.