• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #![allow(clippy::all)]
2 #![warn(clippy::pattern_type_mismatch)]
3 
main()4 fn main() {}
5 
tuple_types()6 fn tuple_types() {
7     struct TupleStruct<'a>(&'a Option<i32>);
8     let ref_value = &TupleStruct(&Some(42));
9 
10     // not ok
11     let TupleStruct(_) = ref_value;
12     if let &TupleStruct(Some(_)) = ref_value {}
13     if let TupleStruct(Some(_)) = *ref_value {}
14 
15     // ok
16     let &TupleStruct(_) = ref_value;
17     let TupleStruct(_) = *ref_value;
18     if let &TupleStruct(&Some(_)) = ref_value {}
19     if let TupleStruct(&Some(_)) = *ref_value {}
20 }
21 
tuple_enum_variants()22 fn tuple_enum_variants() {
23     enum TupleEnum<'a> {
24         Empty,
25         Var(&'a Option<i32>),
26     }
27     let ref_value = &TupleEnum::Var(&Some(42));
28 
29     // not ok
30     if let TupleEnum::Var(_) = ref_value {}
31     if let &TupleEnum::Var(Some(_)) = ref_value {}
32     if let TupleEnum::Var(Some(_)) = *ref_value {}
33     if let TupleEnum::Empty = ref_value {}
34 
35     // ok
36     if let &TupleEnum::Var(_) = ref_value {}
37     if let TupleEnum::Var(_) = *ref_value {}
38     if let &TupleEnum::Var(&Some(_)) = ref_value {}
39     if let TupleEnum::Var(&Some(_)) = *ref_value {}
40     if let &TupleEnum::Empty = ref_value {}
41     if let TupleEnum::Empty = *ref_value {}
42 }
43 
plain_tuples()44 fn plain_tuples() {
45     let ref_value = &(&Some(23), &Some(42));
46 
47     // not ok
48     let (_a, _b) = ref_value;
49     if let &(_a, Some(_)) = ref_value {}
50     if let (_a, Some(_)) = *ref_value {}
51 
52     // ok
53     let &(_a, _b) = ref_value;
54     let (_a, _b) = *ref_value;
55     if let &(_a, &Some(_)) = ref_value {}
56     if let (_a, &Some(_)) = *ref_value {}
57 }
58