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