| Crates.io | fn_ops |
| lib.rs | fn_ops |
| version | 0.1.0 |
| created_at | 2015-12-24 14:43:24.130021+00 |
| updated_at | 2015-12-24 14:43:24.130021+00 |
| description | Temporary traits for function operator overloading, pending the stabilization of `Fn`, `FnMut`, and `FnOnce`. |
| homepage | https://github.com/bjz/fn_ops |
| repository | https://github.com/bjz/fn_ops |
| max_upload_size | |
| id | 3743 |
| size | 19,509 |
Temporary traits for function operator overloading, pending the stabilization of
Fn, FnMut, and FnOnce.
use fn_ops::*;
struct IsMultipleOf(i32);
impl FnOnce<(i32, i32)> for IsMultipleOf {
type Output = bool;
fn call_once(self, (x, y): (i32, i32)) -> bool { self.call((x, y)) }
}
impl FnMut<(i32, i32)> for IsMultipleOf {
fn call_mut(&mut self, (x, y): (i32, i32)) -> bool { self.call((x, y)) }
}
impl Fn<(i32, i32)> for IsMultipleOf {
fn call(&self, (x, y): (i32, i32)) -> bool {
x * self.0 == y
}
}
fn assert_fn<Args, F: Fn<Args, Output = bool>>(args: Args, f: F) {
assert!(f.call(args))
}
assert_fn((1, 2), IsMultipleOf(2));
assert_fn((1, 2, 3), |x, y, z| x != y && y != z && z != x);