1 unstable release
0.1.0 | Oct 29, 2022 |
---|
#2112 in Rust patterns
5,552 downloads per month
6KB
[dependencies]
float-derive = "0.1.0"
IEEE 754 floating point numbers can have the value NAN (not a number). It is unequal to any float, including itself! This is the reason `f32` and `f64` doesn’t implement the `Eq` trait.
This crate allows to derive Eq
and Hash
for traits that contain floating points by explicitly comparing floating points such that: NAN == NAN is true.
How to use
use float_derive::{FloatPartialEq, FloatEq, FloatHash};
#[derive(FloatPartialEq, FloatEq, FloatHash)]
struct MyStruct {
a: i32,
b: i32,
my_float: f32,
my_second_float: f64
}
#[derive(FloatPartialEq, FloatEq, FloatHash)]
enum MyEnum {
A(i32, f32),
B { a: i32, b: f64 },
C
}
Credits
- ordered-float for offering explicit float equality.
Dependencies
~2MB
~42K SLoC