error: `T` does not live long enough --> $DIR/issue-105507.rs:37:5 | LL | require_trait(wrap); | ^^^^^^^^^^^^^^^^^^^ | note: due to current limitations in the borrow checker, this implies a `'static` lifetime --> $DIR/issue-105507.rs:27:35 | LL | for<'a> T::Projected<'a>: MyTrait, | ^^^^^^^ help: consider restricting the type parameter to the `'static` lifetime | LL | fn foo<T : MyTrait + 'static, U : MyTrait + 'static>(wrap: Wrapper<'_, Option<T>>, wrap1: Wrapper<'_, Option<U>>) { | +++++++++ +++++++++ error: `U` does not live long enough --> $DIR/issue-105507.rs:39:5 | LL | require_trait(wrap1); | ^^^^^^^^^^^^^^^^^^^^ | note: due to current limitations in the borrow checker, this implies a `'static` lifetime --> $DIR/issue-105507.rs:27:35 | LL | for<'a> T::Projected<'a>: MyTrait, | ^^^^^^^ help: consider restricting the type parameter to the `'static` lifetime | LL | fn foo<T : MyTrait + 'static, U : MyTrait + 'static>(wrap: Wrapper<'_, Option<T>>, wrap1: Wrapper<'_, Option<U>>) { | +++++++++ +++++++++ error: aborting due to 2 previous errors