就地插入 Rust 数组,将其他元素向下推

Cam*_*ark 4 rust

我正在尝试在 Rust 中执行以下操作,特别是使用数组(我不想在这里使用向量,并且希望在完成后将元素从数组中推出)。

let mut x = [1, 2, 3, 4, 5];
// array, number to insert, place to be inserted at
insert_in_place(&x, 7, 1);
// x is now [1, 7, 2, 3, 4];
Run Code Online (Sandbox Code Playgroud)

如何实现insert_in_place?

我认为有一种方法可以使用切片来做到这一点,但我仍在学习并想知道是否有一种真正优雅的方法来完成这种事情。

ale*_*pha 11

\n

fn insert_in_place<T>(array: &mut [T], value: T, index: usize) {\n  *array.last_mut().unwrap() = value;\n  array[index..].rotate_right(1);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在线尝试一下!

\n

或者等价地:

\n\n
fn insert_in_place<T>(array: &mut [T], value: T, index: usize) {\n  array[index..].rotate_right(1);\n  array[index] = value;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在线尝试一下!

\n