mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			28 lines
		
	
	
		
			368 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			368 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
// check-pass
 | 
						|
// compile-flags:-Zpolymorphize=on
 | 
						|
 | 
						|
pub struct OnDrop<F: Fn()>(pub F);
 | 
						|
 | 
						|
impl<F: Fn()> Drop for OnDrop<F> {
 | 
						|
    fn drop(&mut self) { }
 | 
						|
}
 | 
						|
 | 
						|
fn bar<F: FnOnce()>(f: F) {
 | 
						|
    let _ = OnDrop(|| ());
 | 
						|
    f()
 | 
						|
}
 | 
						|
 | 
						|
fn foo<R, S: FnOnce()>(
 | 
						|
    _: R,
 | 
						|
    _: S,
 | 
						|
) {
 | 
						|
    let bar = || {
 | 
						|
        bar(|| {})
 | 
						|
    };
 | 
						|
    let _ = bar();
 | 
						|
}
 | 
						|
 | 
						|
fn main() {
 | 
						|
    foo(3u32, || {});
 | 
						|
}
 |