error[E0308]: mismatched types --> $DIR/return-bindings.rs:3:17 | LL | fn a(i: i32) -> i32 {} | - ^^^ expected `i32`, found `()` | | | implicitly returns `()` as its body has no tail or `return` expression | help: consider returning the local binding `i` | LL | fn a(i: i32) -> i32 { i } | + error[E0308]: mismatched types --> $DIR/return-bindings.rs:7:46 | LL | let s: String = if let Some(s) = opt_str { | ______________________________________________^ LL | | LL | | } else { | |_____^ expected `String`, found `()` | help: consider returning the local binding `s` | LL ~ let s: String = if let Some(s) = opt_str { LL + s LL ~ | error[E0308]: mismatched types --> $DIR/return-bindings.rs:14:11 | LL | fn c() -> Option { | - ^^^^^^^^^^^ expected `Option`, found `()` | | | implicitly returns `()` as its body has no tail or `return` expression | = note: expected enum `Option` found unit type `()` help: consider returning the local binding `x` | LL ~ let x = Some(1); LL + x | error[E0308]: mismatched types --> $DIR/return-bindings.rs:20:46 | LL | let s: String = if let Some(s) = opt_str { | ______________________________________________^ LL | | LL | | } else { | |_____^ expected `String`, found `()` | help: consider returning the local binding `s` | LL ~ let s: String = if let Some(s) = opt_str { LL + s LL ~ | error[E0308]: `if` and `else` have incompatible types --> $DIR/return-bindings.rs:30:9 | LL | let s = if let Some(s) = opt_str { | ______________________________________- LL | | } else { | |_____- expected because of this LL | String::new() | ^^^^^^^^^^^^^ expected `()`, found `String` | help: consider returning the local binding `s` | LL ~ let s = if let Some(s) = opt_str { LL + s LL ~ } else { | error[E0308]: mismatched types --> $DIR/return-bindings.rs:37:20 | LL | Some(s) => {} | ^^ expected `String`, found `()` | help: consider returning the local binding `s` | LL | Some(s) => { s } | + error[E0308]: `match` arms have incompatible types --> $DIR/return-bindings.rs:46:17 | LL | let s = match opt_str { | _____________- LL | | Some(s) => {} | | -- this is found to be of type `()` LL | | None => String::new(), | | ^^^^^^^^^^^^^ expected `()`, found `String` LL | | LL | | }; | |_____- `match` arms have incompatible types | help: consider returning the local binding `s` | LL | Some(s) => { s } | + error: aborting due to 7 previous errors For more information about this error, try `rustc --explain E0308`.