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