| //@ run-pass | |
| pub trait FakeCoroutine { | |
| type Yield; | |
| type Return; | |
| } | |
| pub trait FakeFuture { | |
| type Output; | |
| } | |
| pub fn future_from_coroutine< | |
| T: FakeCoroutine<Yield = ()> | |
| >(x: T) -> impl FakeFuture<Output = T::Return> { | |
| GenFuture(x) | |
| } | |
| struct GenFuture<T: FakeCoroutine<Yield = ()>>(#[allow(dead_code)] T); | |
| impl<T: FakeCoroutine<Yield = ()>> FakeFuture for GenFuture<T> { | |
| type Output = T::Return; | |
| } | |
| fn main() {} |