我有一个可选值数组
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,这会将Nones 放在第一位。
| 归档时间: |
|
| 查看次数: |
445 次 |
| 最近记录: |