Crate try_partialord[−][src]
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
InvalidOrderError | Error when |
Traits
TryBinarySearch | Binary Search methods for |
TryMinMax | Min and max methods for |
TrySort | Sort methods for |
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 Definitions
OrderResult | Alias for result |