| union Test { | |
| a: A, //~ ERROR field must implement `Copy` or be wrapped in `ManuallyDrop<...>` to be used in a union | |
| b: B | |
| } | |
| #[derive(Debug)] | |
| struct A(i32); | |
| impl Drop for A { | |
| fn drop(&mut self) { println!("A"); } | |
| } | |
| #[derive(Debug)] | |
| struct B(f32); | |
| impl Drop for B { | |
| fn drop(&mut self) { println!("B"); } | |
| } | |
| fn main() { | |
| let mut test = Test { a: A(3) }; | |
| println!("{:?}", unsafe { test.b }); | |
| unsafe { test.b = B(0.5); } | |
| } |