| error[E0308]: mismatched types |
| --> $DIR/match-with-different-arm-types-as-stmt-instead-of-expr.rs:9:30 |
| | |
| LL | fn not_all_paths(a: &str) -> u32 { |
| | ------------- ^^^ expected `u32`, found `()` |
| | | |
| | implicitly returns `()` as its body has no tail or `return` expression |
| ... |
| LL | }; |
| | - help: remove this semicolon to return this value |
| |
| error[E0308]: `match` arms have incompatible types |
| --> $DIR/match-with-different-arm-types-as-stmt-instead-of-expr.rs:26:14 |
| | |
| LL | / match c { |
| LL | | "baz" => Box::new(Baz), |
| | | ------------- this is found to be of type `Box<Baz>` |
| LL | | _ => Box::new(Bar), |
| | | ^^^^^^^^^^^^^ expected `Box<Baz>`, found `Box<Bar>` |
| LL | | }; |
| | |_____- `match` arms have incompatible types |
| | |
| = note: expected struct `Box<Baz>` |
| found struct `Box<Bar>` |
| note: you might have meant to return the `match` expression |
| --> $DIR/match-with-different-arm-types-as-stmt-instead-of-expr.rs:27:6 |
| | |
| LL | fn wrong(c: &str) -> Box<dyn Foo> { |
| | ------------ the `match` arms can conform to this return type |
| LL | / match c { |
| LL | | "baz" => Box::new(Baz), |
| LL | | _ => Box::new(Bar), |
| LL | | }; |
| | | -^ the `match` is a statement because of this semicolon, consider removing it |
| | |_____| |
| | this could be implicitly returned but it is a statement, not a tail expression |
| |
| error[E0308]: mismatched types |
| --> $DIR/match-with-different-arm-types-as-stmt-instead-of-expr.rs:23:22 |
| | |
| LL | fn wrong(c: &str) -> Box<dyn Foo> { |
| | ----- ^^^^^^^^^^^^ expected `Box<dyn Foo>`, found `()` |
| | | |
| | implicitly returns `()` as its body has no tail or `return` expression |
| | |
| = note: expected struct `Box<(dyn Foo + 'static)>` |
| found unit type `()` |
| |
| error: aborting due to 3 previous errors |
| |
| For more information about this error, try `rustc --explain E0308`. |