| #![feature(type_alias_impl_trait)] |
| |
| // See https://github.com/rust-lang/rust/issues/87258#issuecomment-883293367 |
| |
| trait Trait1 {} |
| |
| struct Struct<'b>(&'b ()); |
| |
| impl<'d> Trait1 for Struct<'d> {} |
| |
| pub trait Trait2 { |
| type FooFuture<'a>: Trait1; |
| fn foo<'a>() -> Self::FooFuture<'a>; |
| } |
| |
| type Helper<'xenon, 'yttrium, KABOOM: Trait2> = impl Trait1; |
| //~^ ERROR unconstrained opaque type |
| |
| impl<'c, S: Trait2> Trait2 for &'c mut S { |
| type FooFuture<'a> = Helper<'c, 'a, S>; |
| fn foo<'a>() -> Self::FooFuture<'a> { |
| Struct(unimplemented!()) |
| } |
| } |
| |
| fn main() {} |