2 releases
0.1.1 | Nov 18, 2020 |
---|---|
0.1.0 | Nov 18, 2020 |
#14 in #equals
10KB
162 lines
ApproxEq
The ApproxEq
trait handily provides a way to define approximate relations between types and comes with already-declared arbitrary implementations for primitive number types!
Easily define implementations for your own types:
use approxeq::ApproxEq;
enum BookFormat {
Paperback,
Hardback,
Ebook,
}
struct Book {
isbn: i32,
format: BookFormat,
}
impl ApproxEq for Book {
// Two books are approximately equal when their respective ISBNs parity matches
fn aeq(&self, &other: Self) -> bool {
self.isbn % 2 == other.isbn %2
}
}
fn main() {
let b1 = Book { isbn: 3, format: Paperback }
let b2 = Book { isbn: 5, format: Hardback }
let b3 = Book { isbn: 10, format: Ebook }
assert!(b1.aeq(&b2));
assert!(b1.nae(&b3));
}
Contributing
Any and all PRs are welcome.
Acknowledgement
The ApproxEq crate is what you might call a joke.
Much of the documentation is an adaptation of rust-lang's std::cmp::PartialEq
trait documentation.