]> git.lizzy.rs Git - rust.git/blob - tests/ui/let_underscore_must_use.rs
Auto merge of #4809 - iankronquist:patch-1, r=flip1995
[rust.git] / tests / ui / let_underscore_must_use.rs
1 #![warn(clippy::let_underscore_must_use)]
2
3 // Debug implementations can fire this lint,
4 // so we shouldn't lint external macros
5 #[derive(Debug)]
6 struct Foo {
7     field: i32,
8 }
9
10 #[must_use]
11 fn f() -> u32 {
12     0
13 }
14
15 fn g() -> Result<u32, u32> {
16     Ok(0)
17 }
18
19 #[must_use]
20 fn l<T>(x: T) -> T {
21     x
22 }
23
24 fn h() -> u32 {
25     0
26 }
27
28 struct S {}
29
30 impl S {
31     #[must_use]
32     pub fn f(&self) -> u32 {
33         0
34     }
35
36     pub fn g(&self) -> Result<u32, u32> {
37         Ok(0)
38     }
39
40     fn k(&self) -> u32 {
41         0
42     }
43
44     #[must_use]
45     fn h() -> u32 {
46         0
47     }
48
49     fn p() -> Result<u32, u32> {
50         Ok(0)
51     }
52 }
53
54 trait Trait {
55     #[must_use]
56     fn a() -> u32;
57 }
58
59 impl Trait for S {
60     fn a() -> u32 {
61         0
62     }
63 }
64
65 fn main() {
66     let _ = f();
67     let _ = g();
68     let _ = h();
69     let _ = l(0_u32);
70
71     let s = S {};
72
73     let _ = s.f();
74     let _ = s.g();
75     let _ = s.k();
76
77     let _ = S::h();
78     let _ = S::p();
79
80     let _ = S::a();
81
82     let _ = if true { Ok(()) } else { Err(()) };
83
84     let a = Result::<(), ()>::Ok(());
85
86     let _ = a.is_ok();
87
88     let _ = a.map(|_| ());
89
90     let _ = a;
91 }