summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/bind_instead_of_map.rs
blob: 1db58dae53860f574a4d1c5021c1a57fa528196c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//@run-rustfix
#![deny(clippy::bind_instead_of_map)]
#![allow(clippy::uninlined_format_args)]

// need a main anyway, use it get rid of unused warnings too
pub fn main() {
    let x = Some(5);
    // the easiest cases
    let _ = x.and_then(Some);
    let _ = x.and_then(|o| Some(o + 1));
    // and an easy counter-example
    let _ = x.and_then(|o| if o < 32 { Some(o) } else { None });

    // Different type
    let x: Result<u32, &str> = Ok(1);
    let _ = x.and_then(Ok);
}

pub fn foo() -> Option<String> {
    let x = Some(String::from("hello"));
    Some("hello".to_owned()).and_then(|s| Some(format!("{}{}", s, x?)))
}

pub fn example2(x: bool) -> Option<&'static str> {
    Some("a").and_then(|s| Some(if x { s } else { return None }))
}