mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-30 20:44:34 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			24 lines
		
	
	
		
			453 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			453 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use std::cell::Cell;
 | |
| use std::rc::Rc;
 | |
| 
 | |
| fn send<T: Send>(_: T) {}
 | |
| 
 | |
| fn main() {
 | |
| }
 | |
| 
 | |
| // Cycles should work as the deferred obligations are
 | |
| // independently resolved and only require the concrete
 | |
| // return type, which can't depend on the obligation.
 | |
| fn cycle1() -> impl Clone {
 | |
|     //~^ ERROR cycle detected
 | |
|     send(cycle2().clone());
 | |
| 
 | |
|     Rc::new(Cell::new(5))
 | |
| }
 | |
| 
 | |
| fn cycle2() -> impl Clone {
 | |
|     send(cycle1().clone());
 | |
| 
 | |
|     Rc::new(String::from("foo"))
 | |
| }
 | 
