error[E0308]: mismatched types --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:5:5 | LL | fn foo() -> impl std::fmt::Display { | ---------------------- expected because this return type... LL | if false { LL | return 0i32; | ---- ...is found to be `i32` here LL | } LL | 1u32 | ^^^^ expected `i32`, found `u32` | = note: to return `impl Trait`, all returned values must be of the same type = note: for information on `impl Trait`, see = help: you can instead return a boxed trait object using `Box` = note: for information on trait objects, see = help: alternatively, create a new `enum` with a variant for each returned type error[E0308]: mismatched types --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:13:16 | LL | fn bar() -> impl std::fmt::Display { | ---------------------- expected because this return type... LL | if false { LL | return 0i32; | ---- ...is found to be `i32` here LL | } else { LL | return 1u32; | ^^^^ expected `i32`, found `u32` | = note: to return `impl Trait`, all returned values must be of the same type = note: for information on `impl Trait`, see = help: you can instead return a boxed trait object using `Box` = note: for information on trait objects, see = help: alternatively, create a new `enum` with a variant for each returned type error[E0308]: mismatched types --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:22:9 | LL | fn baz() -> impl std::fmt::Display { | ---------------------- expected because this return type... LL | if false { LL | return 0i32; | ---- ...is found to be `i32` here LL | } else { LL | 1u32 | ^^^^ expected `i32`, found `u32` | = note: to return `impl Trait`, all returned values must be of the same type = note: for information on `impl Trait`, see = help: you can instead return a boxed trait object using `Box` = note: for information on trait objects, see = help: alternatively, create a new `enum` with a variant for each returned type error[E0308]: `if` and `else` have incompatible types --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:31:9 | LL | / if false { LL | | 0i32 | | ---- expected because of this LL | | } else { LL | | 1u32 | | ^^^^ expected `i32`, found `u32` LL | | LL | | } | |_____- `if` and `else` have incompatible types error[E0308]: mismatched types --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:39:14 | LL | fn bat() -> impl std::fmt::Display { | ---------------------- expected because this return type... LL | match 13 { LL | 0 => return 0i32, | ---- ...is found to be `i32` here LL | _ => 1u32, | ^^^^ expected `i32`, found `u32` | = note: to return `impl Trait`, all returned values must be of the same type = note: for information on `impl Trait`, see = help: you can instead return a boxed trait object using `Box` = note: for information on trait objects, see = help: alternatively, create a new `enum` with a variant for each returned type error[E0308]: mismatched types --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:45:5 | LL | fn can() -> impl std::fmt::Display { | ---------------------- expected because this return type... LL | / match 13 { LL | | LL | | 0 => return 0i32, | | ---- ...is found to be `i32` here LL | | 1 => 1u32, LL | | _ => 2u32, LL | | } | |_____^ expected `i32`, found `u32` | = note: to return `impl Trait`, all returned values must be of the same type = note: for information on `impl Trait`, see = help: you can instead return a boxed trait object using `Box` = note: for information on trait objects, see = help: alternatively, create a new `enum` with a variant for each returned type error[E0308]: mismatched types --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:59:13 | LL | fn cat() -> impl std::fmt::Display { | ---------------------- expected because this return type... ... LL | return 0i32; | ---- ...is found to be `i32` here ... LL | 1u32 | ^^^^ expected `i32`, found `u32` | = note: to return `impl Trait`, all returned values must be of the same type = note: for information on `impl Trait`, see = help: you can instead return a boxed trait object using `Box` = note: for information on trait objects, see = help: alternatively, create a new `enum` with a variant for each returned type error: aborting due to 7 previous errors For more information about this error, try `rustc --explain E0308`.