summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/option_filter_map.rs
blob: 7abaaa0fb83b35883da6233109796da4ba708502 (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
27
// run-rustfix
#![warn(clippy::option_filter_map)]
#![allow(clippy::map_flatten)]

fn main() {
    let _ = Some(Some(1)).filter(Option::is_some).map(Option::unwrap);
    let _ = Some(Some(1)).filter(|o| o.is_some()).map(|o| o.unwrap());
    let _ = Some(1).map(odds_out).filter(Option::is_some).map(Option::unwrap);
    let _ = Some(1).map(odds_out).filter(|o| o.is_some()).map(|o| o.unwrap());

    let _ = vec![Some(1)].into_iter().filter(Option::is_some).map(Option::unwrap);
    let _ = vec![Some(1)].into_iter().filter(|o| o.is_some()).map(|o| o.unwrap());
    let _ = vec![1]
        .into_iter()
        .map(odds_out)
        .filter(Option::is_some)
        .map(Option::unwrap);
    let _ = vec![1]
        .into_iter()
        .map(odds_out)
        .filter(|o| o.is_some())
        .map(|o| o.unwrap());
}

fn odds_out(x: i32) -> Option<i32> {
    if x % 2 == 0 { Some(x) } else { None }
}