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