mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
		
			759 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			759 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
// run-pass
 | 
						|
 | 
						|
#![allow(dead_code)]
 | 
						|
// Issue #5041 - avoid overlapping memcpy when src and dest of a swap are the same
 | 
						|
 | 
						|
// pretty-expanded FIXME #23616
 | 
						|
 | 
						|
use std::ptr;
 | 
						|
 | 
						|
pub fn main() {
 | 
						|
    let mut test = TestDescAndFn {
 | 
						|
        desc: TestDesc {
 | 
						|
            name: TestName::DynTestName("test".to_string()),
 | 
						|
            should_fail: false
 | 
						|
        },
 | 
						|
        testfn: TestFn::DynTestFn(22),
 | 
						|
    };
 | 
						|
    do_swap(&mut test);
 | 
						|
}
 | 
						|
 | 
						|
fn do_swap(test: &mut TestDescAndFn) {
 | 
						|
    unsafe {
 | 
						|
        ptr::swap(test, test);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
pub enum TestName {
 | 
						|
    DynTestName(String)
 | 
						|
}
 | 
						|
 | 
						|
pub enum TestFn {
 | 
						|
    DynTestFn(isize),
 | 
						|
    DynBenchFn(isize),
 | 
						|
}
 | 
						|
 | 
						|
pub struct TestDesc {
 | 
						|
    name: TestName,
 | 
						|
    should_fail: bool
 | 
						|
}
 | 
						|
 | 
						|
pub struct TestDescAndFn {
 | 
						|
    desc: TestDesc,
 | 
						|
    testfn: TestFn,
 | 
						|
}
 |