num-cmp

The NumCmp trait for comparison between differently typed numbers.

```rust use std::f32; use std::cmp::Ordering; use num_cmp::NumCmp;

assert!(NumCmp::numeq(3u64, 3.0f32)); assert!(NumCmp::numlt(-4.7f64, -4i8)); assert!(!NumCmp::num_ge(-3i8, 1u16));

// 40000000 can be exactly represented in f32, 40000001 cannot asserteq!(NumCmp::numcmp(40000000.0f32, 40000000u32), Some(Ordering::Equal)); assertne!(NumCmp::numcmp(40000001.0f32, 40000001u32), Some(Ordering::Equal)); asserteq!(NumCmp::numcmp(f32::NAN, 40000002u32), None); ```

The i128 Cargo feature can be enabled in nightly to get support for i128 and u128 types as well, which is being implemented in Rust issue #35118.