Expand description
Safe failable sort, min, max, binary_search functions for PartialOrd. No need to wrap f32
, f64
to sort any more.
This crate provides helper traits for type with only PartialOrd
but not Ord
( like f32
, f64
), to use methods where Ord
is needed, like sort, min, max and binary_search.
These methods are almost same as the methods for Ord, exept that it returns InvalidOrderError
when the partial_cmp
returns None
.
These traits have try_
methods like try_sort
for slice::sort
.
This is safer than using something like sort_by
with ignoreing None case of partial_cmp
because it handle error instead of panic.
Sort is using the same logic as std.
This supports no_std
with no std
feature flag.
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());
Structs§
- Invalid
Order Error - Error when
partial_cmp
returnsNone
during the operation.
Traits§
- TryBinary
Search - Binary Search methods for
PartialOrd
. - TryMin
Max - Min and max methods for
PartialOrd
- TrySort
- Sort methods for
PartialOrd
.
Functions§
- try_
is_ sorted_ by - Function to check whether iter is sorted.
- try_
is_ sorted_ by_ slice - Function to check whether slice is sorted.
Type Aliases§
- Order
Result - Alias for result