]> git.lizzy.rs Git - rust.git/blob - tests/ui/bind_instead_of_map_multipart.rs
iterate List by value
[rust.git] / tests / ui / bind_instead_of_map_multipart.rs
1 #![deny(clippy::bind_instead_of_map)]
2 #![allow(clippy::blocks_in_if_conditions)]
3
4 pub fn main() {
5     let _ = Some("42").and_then(|s| if s.len() < 42 { Some(0) } else { Some(s.len()) });
6     let _ = Some("42").and_then(|s| if s.len() < 42 { None } else { Some(s.len()) });
7
8     let _ = Ok::<_, ()>("42").and_then(|s| if s.len() < 42 { Ok(0) } else { Ok(s.len()) });
9     let _ = Ok::<_, ()>("42").and_then(|s| if s.len() < 42 { Err(()) } else { Ok(s.len()) });
10
11     let _ = Err::<(), _>("42").or_else(|s| if s.len() < 42 { Err(s.len() + 20) } else { Err(s.len()) });
12     let _ = Err::<(), _>("42").or_else(|s| if s.len() < 42 { Ok(()) } else { Err(s.len()) });
13
14     hard_example();
15     macro_example();
16 }
17
18 fn hard_example() {
19     Some("42").and_then(|s| {
20         if {
21             if s == "43" {
22                 return Some(43);
23             }
24             s == "42"
25         } {
26             return Some(45);
27         }
28         match s.len() {
29             10 => Some(2),
30             20 => {
31                 if foo() {
32                     return {
33                         if foo() {
34                             return Some(20);
35                         }
36                         println!("foo");
37                         Some(3)
38                     };
39                 }
40                 Some(20)
41             },
42             40 => Some(30),
43             _ => Some(1),
44         }
45     });
46 }
47
48 fn foo() -> bool {
49     true
50 }
51
52 macro_rules! m {
53     () => {
54         Some(10)
55     };
56 }
57
58 fn macro_example() {
59     let _ = Some("").and_then(|s| if s.len() == 20 { m!() } else { Some(20) });
60     let _ = Some("").and_then(|s| if s.len() == 20 { Some(m!()) } else { Some(Some(20)) });
61 }