2 // aux-build:macro_rules.rs
4 #![allow(unused_variables, dead_code, clippy::derive_partial_eq_without_eq)]
5 #![warn(clippy::equatable_if_let)]
8 extern crate macro_rules;
10 use std::cmp::Ordering;
14 TupleVariant(i32, u64),
15 RecordVariant { a: i64, b: u32 },
31 enum NotStructuralEq {
36 impl PartialEq for NotStructuralEq {
37 fn eq(&self, _: &NotStructuralEq) -> bool {
46 let d = Struct { a: 2, b: false };
47 let e = Enum::UnitVariant;
48 let f = NotPartialEq::A;
49 let g = NotStructuralEq::A;
54 if a.cmp(&b) == Ordering::Greater {}
56 if d == (Struct { a: 2, b: false }) {}
57 if e == Enum::TupleVariant(32, 64) {}
58 if e == (Enum::RecordVariant { a: 64, b: 32 }) {}
59 if e == Enum::UnitVariant {}
60 if (e, &d) == (Enum::UnitVariant, &Struct { a: 2, b: false }) {}
66 if let Some(3 | 4) = c {}
67 if let Struct { a, b: false } = d {}
68 if let Struct { a: 2, b: x } = d {}
69 if let NotPartialEq::A = f {}
70 if g == NotStructuralEq::A {}
71 if let Some(NotPartialEq::A) = Some(f) {}
72 if Some(g) == Some(NotStructuralEq::A) {}