warning: function cannot return without recursing --> $DIR/multiple-defining-usages-in-body.rs:4:1 | LL | fn foo() -> impl Trait { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing LL | LL | let a: T = foo::(); | ------------- recursive call site | = help: a `loop` may express intention better if this is on purpose = note: `#[warn(unconditional_recursion)]` on by default error: concrete type differs from previous defining opaque type use --> $DIR/multiple-defining-usages-in-body.rs:8:16 | LL | let _: T = foo::(); | ^^^^^^^^^^^^^ expected `T`, got `U` | note: previous use here --> $DIR/multiple-defining-usages-in-body.rs:6:16 | LL | let a: T = foo::(); | ^^^^^^^^^^^^^ error: aborting due to previous error; 1 warning emitted