blob: 86d971044fe1c1cdcba1c7f197ba0f8e6316b0ca [file] [log] [blame]
// This test is illustrating the difference between how failing to derive
// `PartialEq` is handled compared to failing to implement it at all.
// See also RFC 1445
#[derive(PartialEq, Eq)]
struct Structural(u32);
struct NoPartialEq(u32);
struct NoDerive(u32);
// This impl makes NoDerive irreflexive.
impl PartialEq for NoDerive { fn eq(&self, _: &Self) -> bool { false } }
impl Eq for NoDerive { }
const NO_DERIVE_NONE: Option<NoDerive> = None;
const NO_PARTIAL_EQ_NONE: Option<NoPartialEq> = None;
fn main() {
match None {
NO_DERIVE_NONE => println!("NO_DERIVE_NONE"),
_ => panic!("whoops"),
}
match None {
NO_PARTIAL_EQ_NONE => println!("NO_PARTIAL_EQ_NONE"),
//~^ ERROR must be annotated with `#[derive(PartialEq)]`
_ => panic!("whoops"),
}
}