Метод rotate_left
Метод rotate_left выполняет циклический сдвиг
элементов среза влево. Параметром метод принимает
количество позиций mid, на которое нужно
сдвинуть элементы. Элементы, которые «выходят» за
левую границу среза, перемещаются в его конец.
Метод изменяет срез на месте и не возвращает
значения.
Если значение mid больше длины среза,
сдвиг выполняется по модулю длины, то есть
фактически происходит поворот на
mid % len позиций. Если mid равно
нулю или длине среза, порядок элементов не
меняется.
Синтаксис
slice.rotate_left(mid)
Пример
Давайте сдвинем срез [1, 2, 3, 4, 5]
влево на 2 позиции:
fn main()
{
let mut arr = [1, 2, 3, 4, 5];
arr.rotate_left(2);
println!("{:?}", arr);
}
Результат выполнения кода:
[3, 4, 5, 1, 2]
Пример
Давайте сдвинем срез [1, 2, 3, 4, 5]
влево на 5 позиций, то есть на всю длину среза:
fn main()
{
let mut arr = [1, 2, 3, 4, 5];
arr.rotate_left(5);
println!("{:?}", arr);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте сдвинем срез [1, 2, 3, 4, 5]
влево на 7 позиций. Так как 7 больше длины среза,
сдвиг выполнится по модулю 5, то есть на 2 позиции:
fn main()
{
let mut arr = [1, 2, 3, 4, 5];
arr.rotate_left(7);
println!("{:?}", arr);
}
Результат выполнения кода:
[3, 4, 5, 1, 2]
Пример
Давайте сдвинем срез строк
["a", "b", "c", "d", "e"] влево на 1 позицию:
fn main()
{
let mut arr = ["a", "b", "c", "d", "e"];
arr.rotate_left(1);
println!("{:?}", arr);
}
Результат выполнения кода:
["b", "c", "d", "e", "a"]
Смотрите также
-
метод
rotate_right,
который выполняет циклический сдвиг среза вправо -
метод
reverse,
который меняет порядок элементов среза на обратный -
метод
swap,
который меняет местами два элемента среза -
метод
swap_with_slice,
который меняет местами содержимое двух срезов