mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			25 lines
		
	
	
		
			433 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			433 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //@ 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() {}
 | 
