use std::mem::ManuallyDrop; | |
#[derive(Clone)] //~ ERROR the trait bound `U1: Copy` is not satisfied | |
union U1 { | |
a: u8, | |
} | |
#[derive(Clone)] | |
union U2 { | |
a: u8, // OK | |
} | |
impl Copy for U2 {} | |
#[derive(Clone, Copy)] | |
union U3 { | |
a: u8, // OK | |
} | |
#[derive(Clone, Copy)] | |
union U4<T: Copy> { | |
a: T, // OK | |
} | |
#[derive(Clone, Copy)] | |
union U5<T> { | |
a: ManuallyDrop<T>, // OK | |
} | |
#[derive(Clone)] | |
struct CloneNoCopy; | |
fn main() { | |
let u = U5 { a: ManuallyDrop::new(CloneNoCopy) }; | |
let w = u.clone(); //~ ERROR the method | |
} |