]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/manual_ok_or.rs
Rollup merge of #102581 - jyn514:src-detection, r=Mark-Simulacrum
[rust.git] / src / tools / clippy / tests / ui / manual_ok_or.rs
1 // run-rustfix
2 #![warn(clippy::manual_ok_or)]
3 #![allow(clippy::disallowed_names)]
4 #![allow(clippy::redundant_closure)]
5 #![allow(dead_code)]
6 #![allow(unused_must_use)]
7
8 fn main() {
9     // basic case
10     let foo: Option<i32> = None;
11     foo.map_or(Err("error"), |v| Ok(v));
12
13     // eta expansion case
14     foo.map_or(Err("error"), Ok);
15
16     // turbo fish syntax
17     None::<i32>.map_or(Err("error"), |v| Ok(v));
18
19     // multiline case
20     #[rustfmt::skip]
21     foo.map_or(Err::<i32, &str>(
22         &format!(
23             "{}{}{}{}{}{}{}",
24             "Alice", "Bob", "Sarah", "Marc", "Sandra", "Eric", "Jenifer")
25         ),
26         |v| Ok(v),
27     );
28
29     // not applicable, closure isn't direct `Ok` wrapping
30     foo.map_or(Err("error"), |v| Ok(v + 1));
31
32     // not applicable, or side isn't `Result::Err`
33     foo.map_or(Ok::<i32, &str>(1), |v| Ok(v));
34
35     // not applicable, expr is not a `Result` value
36     foo.map_or(42, |v| v);
37
38     // TODO patterns not covered yet
39     match foo {
40         Some(v) => Ok(v),
41         None => Err("error"),
42     };
43     foo.map_or_else(|| Err("error"), |v| Ok(v));
44 }