相关疑难解决方法(0)

什么是非词汇生命?

Rust有一个与非词汇生命周期相关的RFC,已被批准在该语言中实现了很长时间.最近,Rust对此功能的支持有了很大改进,并且被认为是完整的.

我的问题是:非词汇生命究竟是什么?

lifetime rust lifetime-scoping

63
推荐指数
1
解决办法
6149
查看次数

如何在数组中添加值?

是否可以在数组前面添加一个值?我知道如何连接两个数组,但如果我有一个数组和一个值(与数组类型相同),我可以将此元素添加到数组前面吗?

arrays prepend rust

9
推荐指数
1
解决办法
3万
查看次数

在稳定 Rust 中,如何将最小值移出数组,删除其他值?

我有一个固定大小[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)

当然,我对此不是很满意......有没有更安全,也许不那么冗长的解决方案?

arrays unsafe move-semantics rust

5
推荐指数
1
解决办法
123
查看次数