2020-03-01 10:36:14 -06:00
|
|
|
#![warn(clippy::rest_pat_in_fully_bound_structs)]
|
2023-10-21 07:16:11 -05:00
|
|
|
#![allow(clippy::struct_field_names)]
|
2020-03-01 10:36:14 -06:00
|
|
|
|
|
|
|
struct A {
|
|
|
|
a: i32,
|
|
|
|
b: i64,
|
|
|
|
c: &'static str,
|
|
|
|
}
|
|
|
|
|
2020-03-27 14:36:00 -05:00
|
|
|
macro_rules! foo {
|
|
|
|
($param:expr) => {
|
|
|
|
match $param {
|
|
|
|
A { a: 0, b: 0, c: "", .. } => {},
|
|
|
|
_ => {},
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2020-03-01 10:36:14 -06:00
|
|
|
fn main() {
|
|
|
|
let a_struct = A { a: 5, b: 42, c: "A" };
|
|
|
|
|
|
|
|
match a_struct {
|
|
|
|
A { a: 5, b: 42, c: "", .. } => {}, // Lint
|
2023-08-24 14:32:12 -05:00
|
|
|
//~^ ERROR: unnecessary use of `..` pattern in struct binding. All fields were alr
|
|
|
|
A { a: 0, b: 0, c: "", .. } => {}, // Lint
|
|
|
|
//~^ ERROR: unnecessary use of `..` pattern in struct binding. All fields were alr
|
2020-03-01 10:36:14 -06:00
|
|
|
_ => {},
|
|
|
|
}
|
|
|
|
|
|
|
|
match a_struct {
|
|
|
|
A { a: 5, b: 42, .. } => {},
|
|
|
|
A { a: 0, b: 0, c: "", .. } => {}, // Lint
|
2023-08-24 14:32:12 -05:00
|
|
|
//~^ ERROR: unnecessary use of `..` pattern in struct binding. All fields were alr
|
2020-03-01 10:36:14 -06:00
|
|
|
_ => {},
|
|
|
|
}
|
|
|
|
|
|
|
|
// No lint
|
|
|
|
match a_struct {
|
|
|
|
A { a: 5, .. } => {},
|
|
|
|
A { a: 0, b: 0, .. } => {},
|
|
|
|
_ => {},
|
|
|
|
}
|
2020-03-27 14:36:00 -05:00
|
|
|
|
|
|
|
// No lint
|
|
|
|
foo!(a_struct);
|
2022-05-05 09:12:52 -05:00
|
|
|
|
|
|
|
#[non_exhaustive]
|
|
|
|
struct B {
|
|
|
|
a: u32,
|
|
|
|
b: u32,
|
|
|
|
c: u64,
|
|
|
|
}
|
|
|
|
|
|
|
|
let b_struct = B { a: 5, b: 42, c: 342 };
|
|
|
|
|
|
|
|
match b_struct {
|
|
|
|
B { a: 5, b: 42, .. } => {},
|
|
|
|
B { a: 0, b: 0, c: 128, .. } => {}, // No Lint
|
|
|
|
_ => {},
|
|
|
|
}
|
2020-03-01 10:36:14 -06:00
|
|
|
}
|