#![feature(rustc_attrs)] #[rustc_must_implement_one_of(eq, neq)] trait Equal { fn eq(&self, other: &Self) -> bool { !self.neq(other) } fn neq(&self, other: &Self) -> bool { !self.eq(other) } } struct T0; struct T1; struct T2; struct T3; impl Equal for T0 { fn eq(&self, _other: &Self) -> bool { true } } impl Equal for T1 { fn neq(&self, _other: &Self) -> bool { false } } impl Equal for T2 { fn eq(&self, _other: &Self) -> bool { true } fn neq(&self, _other: &Self) -> bool { false } } impl Equal for T3 {} //~^ not all trait items implemented, missing one of: `eq`, `neq` fn main() {}