是否可以在数组前面添加一个值?我知道如何连接两个数组,但如果我有一个数组和一个值(与数组类型相同),我可以将此元素添加到数组前面吗?
我有一个固定大小[T; SIZE]的 T 类型值数组,它是有序的(它实现了Ord,但不一定是Clone或Default)。我想提取数组的最小值并删除所有其他值。
在 nightly rust 中,我可以使用它array::IntoIter来实现这一点,但如果可能的话,我希望我的代码能够在稳定版上编译。
目前,我正在使用以下(操场):
// Don't call this function if T has a custom Drop implementation or invalid bit patterns
unsafe fn get_min<T: Ord>(mut arr: [T; SIZE]) -> T {
let (idx, _) = arr.iter().enumerate().min_by(|(_, x), (_, y)| x.cmp(y)).unwrap();
unsafe { replace(&mut arr[idx], MaybeUninit::uninit().assume_init()) }
}
Run Code Online (Sandbox Code Playgroud)
当然,我对此不是很满意......有没有更安全,也许不那么冗长的解决方案?