Crate totally_ordered[][src]

Expand description

This crate adds the TotallyOrderable trait for f32 and f64 values as well as the ABI-transparent TotallyOrdered type which adds Ord + Eq + Hash to wrapped floating point values. Main use case: sorting of floating-point arrays which may or may not contain not-a-numbers, infinities, and positive or negative zeros.

use totally_ordered::TotallyOrdered;
let mut values : [f64; 4] = [-0.0, 0.0, -1.0, 1.0];
TotallyOrdered::new_slice_mut(&mut values).sort();

Structs

An ABI-transparent newtype wrapper around types that adds Ord + Eq to TotallyOrderable types (f32 and f64).

Traits

Implement this for types that are not directly Ord + Eq, but can be transformed in place in such a way that the associated type Transformed is. Implemented for f32 and f64.

Implement this for types that are not directly Ord + Eq, but can be at a slightly higher runtime cost. Implemented for f32 and f64.

Functions

(Potentially) faster alternative to TotallyOrdered::new_slice_mut followed by sort for values that can be transformed in place.