rust/tests/ui/consts/const_in_pattern/reject_non_partial_eq.rs

33 lines
813 B
Rust

// 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"),
}
}