mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
		
			530 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			530 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
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
 | 
						|
}
 |