error[E0700]: hidden type for `impl Sized + 'a` captures lifetime that does not appear in bounds --> $DIR/early_bound.rs:7:17 | LL | fn test<'a: 'a>(n: bool) -> impl Sized + 'a { | -- --------------- opaque type defined here | | | hidden type `&'a ()` captures the lifetime `'a` as defined here ... LL | let _ = identity::<&'a ()>(test(false)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: concrete type differs from previous defining opaque type use --> $DIR/early_bound.rs:3:29 | LL | fn test<'a: 'a>(n: bool) -> impl Sized + 'a { | ^^^^^^^^^^^^^^^ expected `&()`, got `()` | note: previous use here --> $DIR/early_bound.rs:7:36 | LL | let _ = identity::<&'a ()>(test(false)); | ^^^^^^^^^^^ error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0700`.