1 #![feature(type_alias_impl_trait)]
2 #![feature(generic_associated_types)]
3 
4 // See https://github.com/rust-lang/rust/issues/87258#issuecomment-883293367
5 
6 trait Trait1 {}
7 
8 struct Struct<'b>(&'b ());
9 
10 impl<'d> Trait1 for Struct<'d> {}
11 
12 pub trait Trait2 {
13     type FooFuture<'a>: Trait1;
foo<'a>() -> Self::FooFuture<'a>14     fn foo<'a>() -> Self::FooFuture<'a>;
15 }
16 
17 impl<'c, S: Trait2> Trait2 for &'c mut S {
18     type FooFuture<'a> = impl Trait1;
19     fn foo<'a>() -> Self::FooFuture<'a> { //~ ERROR
20         Struct(unimplemented!())
21     }
22 }
23 
main()24 fn main() {}
25