trait MyTrait {} struct Foo; impl MyTrait for Foo {} fn bar() -> impl MyTrait { Foo } fn foo() -> impl for<'a> MyTrait<&'a str> { bar() //~ ERROR implementation of `MyTrait` is not general enough } fn main() {}