1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
// 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, Eq)]`
_ => panic!("whoops"),
}
}
|