mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	An odd feature of Rust is that `Foo` is invalid, but `Bar` is okay:
    type Foo<'a, 'b> = Box<dyn PartialEq<Foo<'a, 'b>>>;
    type Bar<'a, 'b> = impl PartialEq<Bar<'a, 'b>>;
To get it right, track every time rustdoc descends into a type alias,
so if it shows up twice, it can be write the path instead of
infinitely expanding it.
		
	
			
		
			
				
	
	
		
			16 lines
		
	
	
		
			259 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			16 lines
		
	
	
		
			259 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
// check-pass
 | 
						|
 | 
						|
#![feature(type_alias_impl_trait)]
 | 
						|
 | 
						|
type Bar<'a, 'b> = impl PartialEq<Bar<'a, 'b>> + std::fmt::Debug;
 | 
						|
 | 
						|
fn bar<'a, 'b>(i: &'a i32) -> Bar<'a, 'b> {
 | 
						|
    i
 | 
						|
}
 | 
						|
 | 
						|
fn main() {
 | 
						|
    let meh = 42;
 | 
						|
    let muh = 42;
 | 
						|
    assert_eq!(bar(&meh), bar(&muh));
 | 
						|
}
 |