Crates.io | approxeq |
lib.rs | approxeq |
version | 0.1.1 |
source | src |
created_at | 2020-11-18 01:19:13.647254 |
updated_at | 2020-11-18 16:42:25.029558 |
description | A trait for approximate equality of types |
homepage | |
repository | https://github.com/mibmo/approxeq |
max_upload_size | |
id | 313517 |
size | 10,014 |
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));
}
Any and all PRs are welcome.
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.