// run-rustfix #![allow(dead_code)] fn unwrap_or() { // int case Some(1).unwrap_or(42); // int case reversed Some(1).unwrap_or(42); // richer none expr Some(1).unwrap_or(1 + 42); // multiline case #[rustfmt::skip] Some(1).unwrap_or({ 42 + 42 + 42 + 42 + 42 + 42 + 42 + 42 }); // string case Some("Bob").unwrap_or("Alice"); // don't lint match Some(1) { Some(i) => i + 2, None => 42, }; match Some(1) { Some(i) => i, None => return, }; for j in 0..4 { match Some(j) { Some(i) => i, None => continue, }; match Some(j) { Some(i) => i, None => break, }; } // cases where the none arm isn't a constant expression // are not linted due to potential ownership issues // ownership issue example, don't lint struct NonCopyable; let mut option: Option = None; match option { Some(x) => x, None => { option = Some(NonCopyable); // some more code ... option.unwrap() }, }; // ownership issue example, don't lint let option: Option<&str> = None; match option { Some(s) => s, None => &format!("{} {}!", "hello", "world"), }; } fn main() {}