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: expected type `i32` found type `u32` 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: expected type `i32` found type `u32` error[E0308]: mismatched types --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:19:5 | LL | fn baz() -> impl std::fmt::Display { | ---------------------- expected because this return type... LL | / if false { LL | | LL | | return 0i32; | | ---- ...is found to be `i32` here LL | | } else { LL | | 1u32 LL | | } | |_____^ expected i32, found u32 | = note: expected type `i32` found type `u32` 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 | = note: expected type `i32` found type `u32` error: aborting due to 4 previous errors For more information about this error, try `rustc --explain E0308`.