Метод as_mut_slice
Метод as_mut_slice возвращает изменяемый срез
(&mut [T]) всех элементов вектора.
Он позволяет работать с содержимым вектора
как с обычным срезом, изменяя элементы напрямую.
Метод не принимает параметров и возвращает
изменяемую ссылку на срез.
Синтаксис
vec.as_mut_slice()
Пример
Давайте получим изменяемый срез вектора и изменим первый элемент через него:
fn main()
{
let mut v = vec![1, 2, 3, 4, 5];
let slice = v.as_mut_slice();
slice[0] = 10;
println!("{:?}", v);
}
Результат выполнения кода:
[10, 2, 3, 4, 5]
Пример
Давайте изменим все элементы вектора, умножив каждый на два:
fn main()
{
let mut v = vec![1, 2, 3, 4, 5];
for elem in v.as_mut_slice()
{
*elem *= 2;
}
println!("{:?}", v);
}
Результат выполнения кода:
[2, 4, 6, 8, 10]
Пример
Давайте передадим изменяемый срез вектора в функцию, которая меняет элементы местами:
fn swap_ends(slice: &mut [i32])
{
let len = slice.len();
slice.swap(0, len - 1);
}
fn main()
{
let mut v = vec![1, 2, 3, 4, 5];
swap_ends(v.as_mut_slice());
println!("{:?}", v);
}
Результат выполнения кода:
[5, 2, 3, 4, 1]