extern crate overload; use overload::overload; use std::ops; #[derive(PartialEq, Debug)] struct A(i32); #[derive(PartialEq, Debug)] struct B(i32); overload!(- (a: A) -> B { B(-a.0) }); #[test] fn neg() { assert_eq!(-A(3), B(-3)); } overload!(! (a: A) -> B { B(!a.0) }); #[test] fn not() { assert_eq!(!A(3), B(!3)); }