我有一个可选值数组
struct Foo;
let array: [Option<Foo>; 5] = [
Some(Foo {}),
Some(Foo {}),
None,
Some(Foo {}),
None
];
Run Code Online (Sandbox Code Playgroud)
如何对数组进行排序以将所有None
值“冒泡”到顶部(左/升序)?
预期的结果应该是这样的
println!("{:?}", array) // [None, None, Some(Foo {}), Some(Foo {}), Some(Foo {})]
Run Code Online (Sandbox Code Playgroud)
None
被比较为小于Some
,因此假设Foo
实现Ord
,您只需要调用sort_unstable()
(或sort()
进行稳定排序)。
如果您只想对 s 进行冒泡None
(而不是比较 s 的值Some
),则可以使用sort[_unstable]_by_key(|v| v.is_some())
。由于与false
之前比较true
,这会将None
s 放在第一位。
归档时间: |
|
查看次数: |
445 次 |
最近记录: |