+// run-rustfix
+
#![warn(clippy::or_fun_call)]
+#![allow(dead_code)]
use std::collections::BTreeMap;
use std::collections::HashMap;
+use std::time::Duration;
/// Checks implementation of the `OR_FUN_CALL` lint.
fn or_fun_call() {
let with_enum = Some(Enum::A(1));
with_enum.unwrap_or(Enum::A(5));
- let with_const_fn = Some(::std::time::Duration::from_secs(1));
- with_const_fn.unwrap_or(::std::time::Duration::from_secs(5));
+ let with_const_fn = Some(Duration::from_secs(1));
+ with_const_fn.unwrap_or(Duration::from_secs(5));
let with_constructor = Some(vec![1]);
with_constructor.unwrap_or(make());
let with_vec = Some(vec![1]);
with_vec.unwrap_or(vec![]);
- // FIXME #944: ~|SUGGESTION with_vec.unwrap_or_else(|| vec![]);
-
let without_default = Some(Foo);
without_default.unwrap_or(Foo::new());
}
struct Foo(u8);
+struct Bar(String, Duration);
#[rustfmt::skip]
fn test_or_with_ctors() {
let opt = Some(1);
let _ = opt.ok_or(Foo(two));
let _ = opt.or(Some(2));
let _ = opt.or(Some(two));
+
+ let _ = Some("a".to_string()).or(Some("b".to_string()));
+
+ let b = "b".to_string();
+ let _ = Some(Bar("a".to_string(), Duration::from_secs(1)))
+ .or(Some(Bar(b, Duration::from_secs(2))));
+}
+
+// Issue 4514 - early return
+fn f() -> Option<()> {
+ let a = Some(1);
+ let b = 1i32;
+
+ let _ = a.unwrap_or(b.checked_mul(3)?.min(240));
+
+ Some(())
}
fn main() {}