| use std::future::Future; |
| use std::pin::Pin; |
| |
| trait MyTrait { |
| fn foo<'a, 'b>(&'a self, x: &'b i32) -> impl Future<Output = i32>; |
| } |
| |
| trait ErasedMyTrait { |
| fn foo<'life0, 'life1, 'dynosaur>(&'life0 self, x: &'life1 i32) |
| -> Pin<Box<dyn Future<Output = i32> + 'dynosaur>> |
| where |
| 'life0: 'dynosaur, |
| 'life1: 'dynosaur; |
| } |
| |
| struct DynMyTrait<T: ErasedMyTrait> { |
| ptr: T, |
| } |
| |
| impl<T: ErasedMyTrait> MyTrait for DynMyTrait<T> { |
| fn foo<'a, 'b>(&'a self, x: &'b i32) -> impl Future<Output = i32> { |
| self.ptr.foo(x) |
| //~^ ERROR hidden type for `impl Future<Output = i32>` captures lifetime that does not appear in bounds |
| } |
| } |
| |
| fn main() {} |