mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-27 09:14:20 +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,
|
|
}
|