Метод splice класса Vec
Метод splice заменяет диапазон элементов
в векторе на элементы из итератора и возвращает
удалённые элементы в виде итератора Splice.
Первым параметром метод принимает диапазон
(индексы начала и конца), вторым - итератор,
элементы которого нужно вставить вместо
удалённых. Возвращаемый итератор содержит
элементы, которые были удалены из вектора.
Если возвращаемый итератор не используется,
удалённые элементы отбрасываются.
Синтаксис
vec.splice(range, replace_with)
Пример
Давайте заменим элементы с индексами от 1 до 3
в векторе vec![1, 2, 3, 4, 5] на новые
значения [10, 20]:
fn main()
{
let mut v = vec![1, 2, 3, 4, 5];
v.splice(1..3, [10, 20]);
println!("{:?}", v);
}
Результат выполнения кода:
[1, 10, 20, 4, 5]
Пример
Давайте получим удалённые элементы, сохранив возвращённый итератор в переменную:
fn main()
{
let mut v = vec![1, 2, 3, 4, 5];
let removed: Vec<_> = v.splice(1..3, [10, 20]).collect();
println!("{:?}", v);
println!("{:?}", removed);
}
Результат выполнения кода:
[1, 10, 20, 4, 5]
[2, 3]
Пример
Давайте используем пустой итератор, чтобы просто удалить элементы из вектора:
fn main()
{
let mut v = vec![1, 2, 3, 4, 5];
v.splice(1..4, []);
println!("{:?}", v);
}
Результат выполнения кода:
[1, 5]