45 lines
692 B
Rust
45 lines
692 B
Rust
#![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() {}
|