mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-28 11:38:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			23 lines
		
	
	
		
			480 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			480 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //@ run-pass
 | |
| #![allow(dead_code)]
 | |
| // Test that we do not leak when the arg pattern must drop part of the
 | |
| // argument (in this case, the `y` field).
 | |
| 
 | |
| struct Foo {
 | |
|     x: Box<usize>,
 | |
|     y: Box<usize>,
 | |
| }
 | |
| 
 | |
| fn foo(Foo {x, ..}: Foo) -> *const usize {
 | |
|     let addr: *const usize = &*x;
 | |
|     addr
 | |
| }
 | |
| 
 | |
| pub fn main() {
 | |
|     let obj: Box<_> = Box::new(1);
 | |
|     let objptr: *const usize = &*obj;
 | |
|     let f = Foo { x: obj, y: Box::new(2) };
 | |
|     let xptr = foo(f);
 | |
|     assert_eq!(objptr, xptr);
 | |
| }
 | 
