error[E0106]: missing lifetime specifier --> $DIR/missing-lifetime-in-alias.rs:23:24 | LL | type B<'a> = as Trait>::Foo; | ^^^^^ expected named lifetime parameter | help: consider using the `'a` lifetime | LL | type B<'a> = as Trait<'a>>::Foo; | ++++ error[E0106]: missing lifetime specifier --> $DIR/missing-lifetime-in-alias.rs:27:28 | LL | type C<'a, 'b> = as Trait>::Bar; | ^^^^^ expected named lifetime parameter | note: these named lifetimes are available to use --> $DIR/missing-lifetime-in-alias.rs:27:8 | LL | type C<'a, 'b> = as Trait>::Bar; | ^^ ^^ help: consider using one of the available lifetimes here | LL | type C<'a, 'b> = as Trait<'lifetime>>::Bar; | +++++++++++ error[E0477]: the type `Impl<'a>` does not fulfill the required lifetime --> $DIR/missing-lifetime-in-alias.rs:16:20 | LL | type Bar<'b> | ------------ definition of `Bar` from trait ... LL | type Bar<'b> = &'b (); | ^^^^^^ | note: type must outlive the lifetime `'b` as defined here --> $DIR/missing-lifetime-in-alias.rs:16:14 | LL | type Bar<'b> = &'b (); | ^^ help: copy the `where` clause predicates from the trait | LL | type Bar<'b> = &'b () where Self: 'b; | ++++++++++++++ error[E0107]: missing generics for associated type `Trait::Bar` --> $DIR/missing-lifetime-in-alias.rs:27:36 | LL | type C<'a, 'b> = as Trait>::Bar; | ^^^ expected 1 lifetime argument | note: associated type defined here, with 1 lifetime parameter: `'b` --> $DIR/missing-lifetime-in-alias.rs:4:10 | LL | type Bar<'b> | ^^^ -- help: add missing lifetime argument | LL | type C<'a, 'b> = as Trait>::Bar<'a>; | ++++ error: aborting due to 4 previous errors Some errors have detailed explanations: E0106, E0107, E0477. For more information about an error, try `rustc --explain E0106`.