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.