error[E0308]: mismatched types --> $DIR/expr-as-stmt-2.rs:3:26 | LL | if let Some(x) = a { true } else { false } | ---------------------^^^^----------------- | | | | | expected `()`, found `bool` | expected this to be `()` | help: you might have meant to return this value | LL | if let Some(x) = a { return true; } else { false } | ++++++ + error[E0308]: mismatched types --> $DIR/expr-as-stmt-2.rs:3:40 | LL | if let Some(x) = a { true } else { false } | -----------------------------------^^^^^-- | | | | | expected `()`, found `bool` | expected this to be `()` | help: you might have meant to return this value | LL | if let Some(x) = a { true } else { return false; } | ++++++ + error[E0308]: mismatched types --> $DIR/expr-as-stmt-2.rs:6:5 | LL | fn foo(a: Option, b: Option) -> bool { | ---- expected `bool` because of return type ... LL | / && LL | | if let Some(y) = a { true } else { false } | |______________________________________________^ expected `bool`, found `&&bool` | help: consider removing the `&&` | LL - && LL + if let Some(y) = a { true } else { false } | help: parentheses are required to parse this as an expression | LL | (if let Some(x) = a { true } else { false }) | + + error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0308`.