4 个版本
0.1.3 | 2021年4月9日 |
---|---|
0.1.2 | 2021年4月8日 |
0.1.1 | 2021年4月8日 |
0.1.0 | 2021年4月8日 |
1020 在 Rust 模式
每月 38 次下载
71KB
1K SLoC
try-partialOrd
安全的可失败排序、最小值、最大值、二分查找函数,适用于部分排序。无需再包裹 f32
、f64
进行排序。
此软件包为仅具有 PartialOrd
但不具有 Ord
(例如 f32
、f64
) 的类型提供辅助特质,以使用需要 Ord
的方法,如排序、最小值、最大值和二分查找。这些方法几乎与 Ord
的方法相同,区别在于当 partial_cmp
返回 None
时,它返回 InvalidOrderError
。这些特质具有 try_
方法,如 try_sort
用于 slice::sort
。这比使用像 sort_by
这样忽略 partial_cmp
的 None 情况的方法更安全,因为它处理错误而不是引发恐慌。
排序使用与 std 相同的逻辑。
use try_partialord::*;
use rand::distributions::Standard;
use rand::prelude::*;
let mut vec: Vec<f32> = Standard.sample_iter(thread_rng()).take(100).collect();
//no NAN in vec so sort should succed
let sort_result = vec.try_sort();
assert!(sort_result.is_ok());
assert!(vec.try_is_sorted().unwrap_or(false));
vec.push(f32::NAN);
//NAN in vec so sort should fail
let sort_result = vec.try_sort();
assert!(sort_result.is_err());
assert!(vec.try_is_sorted().is_err());