Function malachite_base::slices::slice_move_left
source · pub fn slice_move_left<T: Copy>(xs: &mut [T], starting_index: usize)
Expand description
Given a slice and an starting index, copies the subslice starting from that index to the beginning of the slice.
In other words, this function copies the contents of &xs[starting_index..]
to `&xs[..xs.len()
- starting_index]`.
In other other words, if $k$ is starting_index
, the sequence $[x_0, x_1, \ldots, x_{n-1}]$
becomes $[x_k, x_{k+1}, \ldots, x_{n-1}, x_{n-k}, x_{n-k+1}, \ldots, x_{n-1}]$.
If starting_index
is zero or xs.len()
, nothing happens.
§Worst-case complexity
$T(n) = O(n)$
$M(n) = O(1)$
where $T$ is time, $M$ is additional memory, and $n$ is xs.len()
.
§Panics
Panics if starting_index
is greater than the length of xs
.
§Examples
use malachite_base::slices::slice_move_left;
let xs = &mut [1, 2, 3, 4, 5, 6];
slice_move_left::<u32>(xs, 2);
assert_eq!(xs, &[3, 4, 5, 6, 5, 6]);