Метод reserve
Метод reserve резервирует дополнительную ёмкость
в векторе Vec, чтобы он мог хранить как минимум
additional элементов больше, чем текущая длина.
Параметром метод принимает количество элементов, которое
нужно зарезервировать. После вызова метода вектор
гарантированно сможет вместить как минимум
len + additional элементов без повторного
перераспределения памяти.
Метод не изменяет длину вектора - только его ёмкость. Если текущей ёмкости уже достаточно, метод ничего не делает.
Синтаксис
vec.reserve(additional)
Пример
Давайте создадим вектор и зарезервируем в нём место для 10 дополнительных элементов:
fn main()
{
let mut vec = vec![1, 2, 3];
println!("before: len = {}, capacity = {}", vec.len(), vec.capacity());
vec.reserve(10);
println!("after: len = {}, capacity = {}", vec.len(), vec.capacity());
}
Результат выполнения кода:
before: len = 3, capacity = 3
after: len = 3, capacity = 13
Пример
Давайте зарезервируем место в пустом векторе:
fn main()
{
let mut vec: Vec<i32> = Vec::new();
println!("before: len = {}, capacity = {}", vec.len(), vec.capacity());
vec.reserve(5);
println!("after: len = {}, capacity = {}", vec.len(), vec.capacity());
}
Результат выполнения кода:
before: len = 0, capacity = 0
after: len = 0, capacity = 5
Пример
Давайте покажем, что метод не изменяет длину вектора, а только его ёмкость:
fn main()
{
let mut vec = vec!["a", "b", "c", "d", "e"];
vec.reserve(100);
println!("len = {}", vec.len());
println!("capacity = {}", vec.capacity());
println!("{:?}", vec);
}
Результат выполнения кода:
len = 5
capacity = 105
["a", "b", "c", "d", "e"]
Смотрите также
-
метод
capacity,
который возвращает текущую ёмкость вектора -
метод
with_capacity,
который создаёт вектор с заданной ёмкостью -
метод
shrink_to_fit,
который уменьшает ёмкость вектора до его длины -
класс
Vec,
который представляет динамический массив