// run-pass #![allow(unused_parens)] #![allow(non_camel_case_types)] enum colour { red(isize, isize), green, } impl PartialEq for colour { fn eq(&self, other: &colour) -> bool { match *self { colour::red(a0, b0) => { match (*other) { colour::red(a1, b1) => a0 == a1 && b0 == b1, colour::green => false, } } colour::green => { match (*other) { colour::red(..) => false, colour::green => true } } } } fn ne(&self, other: &colour) -> bool { !(*self).eq(other) } } fn f() { let x = colour::red(1, 2); let y = colour::green; assert!((x != y)); } pub fn main() { f(); }