Метод resize_with
Метод resize_with изменяет длину вектора до указанного значения.
Если новая длина больше текущей, вектор дополняется элементами,
которые создаются с помощью замыкания. Если новая длина меньше текущей,
лишние элементы удаляются. Первым параметром метод принимает новую длину вектора,
а вторым - замыкание, которое вызывается для создания каждого нового элемента.
Синтаксис
vec.resize_with(new_len, f)
Пример
Давайте увеличим длину вектора с 5 до 8,
создавая новые элементы с помощью замыкания:
fn main()
{
let mut vec = vec![1, 2, 3, 4, 5];
vec.resize_with(8, || 0);
println!("{:?}", vec);
}
Результат выполнения кода:
[1, 2, 3, 4, 5, 0, 0, 0]
Пример
Давайте создадим новые элементы с помощью счётчика внутри замыкания:
fn main()
{
let mut vec = vec![1, 2, 3];
let mut counter = 10;
vec.resize_with(6, || {
counter += 1;
counter
});
println!("{:?}", vec);
}
Результат выполнения кода:
[1, 2, 3, 11, 12, 13]
Пример
Давайте уменьшим длину вектора с 5 до 3.
Замыкание при этом не вызывается:
fn main()
{
let mut vec = vec![1, 2, 3, 4, 5];
vec.resize_with(3, || 0);
println!("{:?}", vec);
}
Результат выполнения кода:
[1, 2, 3]