Метод swap_with_slice
Метод swap_with_slice меняет местами
содержимое двух срезов. Он принимает в качестве
параметра другой изменяемый срез &mut [T],
с которым нужно обменяться элементами. Оба среза
должны иметь одинаковую длину, иначе метод
завершится паникой.
Синтаксис
slice.swap_with_slice(other)
Пример
Давайте обменяем элементы двух векторов
vec![1, 2, 3] и vec![4, 5, 6]:
fn main()
{
let mut a = vec![1, 2, 3];
let mut b = vec![4, 5, 6];
a.swap_with_slice(&mut b);
println!("{:?}", a);
println!("{:?}", b);
}
Результат выполнения кода:
[4, 5, 6]
[1, 2, 3]
Пример
Давайте обменяем две части одного и того же
вектора, используя split_at_mut:
fn main()
{
let mut v = vec![1, 2, 3, 4, 5, 6];
let (left, right) = v.split_at_mut(3);
left.swap_with_slice(right);
println!("{:?}", v);
}
Результат выполнения кода:
[4, 5, 6, 1, 2, 3]
Пример
Давайте обменяем элементы двух срезов строк
"abcde" и "12345":
fn main()
{
let mut a = vec!["a", "b", "c", "d", "e"];
let mut b = vec!["1", "2", "3", "4", "5"];
a.swap_with_slice(&mut b);
println!("{:?}", a);
println!("{:?}", b);
}
Результат выполнения кода:
["1", "2", "3", "4", "5"]
["a", "b", "c", "d", "e"]
Смотрите также
-
метод
swap,
который меняет местами два элемента внутри одного среза -
метод
split_at,
который делит срез на два по указанному индексу -
метод
copy_from_slice,
который копирует элементы из одного среза в другой -
метод
clone_from_slice,
который клонирует элементы из одного среза в другой