mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			22 lines
		
	
	
		
			500 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			500 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
#![feature(rustc_attrs)]
 | 
						|
#![rustc_variance_of_opaques]
 | 
						|
 | 
						|
trait Bar<'a> {
 | 
						|
    type Assoc: From<()>;
 | 
						|
}
 | 
						|
 | 
						|
fn foo<'a, T: Bar<'a>>() -> impl Into<T::Assoc> {
 | 
						|
    //~^ ERROR ['a: o, T: o]
 | 
						|
    // captures both T and 'a invariantly
 | 
						|
    ()
 | 
						|
}
 | 
						|
 | 
						|
fn foo2<'a, T: Bar<'a>>() -> impl Into<T::Assoc> + 'a {
 | 
						|
    //~^ ERROR ['a: o, T: o, 'a: o]
 | 
						|
    // captures both T and 'a invariantly, and also duplicates `'a`
 | 
						|
    // i.e. the opaque looks like `impl Into<<T as Bar<'a>>::Assoc> + 'a_duplicated`
 | 
						|
    ()
 | 
						|
}
 | 
						|
 | 
						|
fn main() {}
 |