mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-12 16:45:37 +00:00
43 lines
665 B
Rust
43 lines
665 B
Rust
// run-pass
|
|
// revisions: mirunsafeck thirunsafeck
|
|
// [thirunsafeck]compile-flags: -Z thir-unsafeck
|
|
|
|
#![allow(dead_code)]
|
|
#![allow(unused_variables)]
|
|
|
|
// Some traits can be derived for unions.
|
|
|
|
#[derive(
|
|
Copy,
|
|
Clone,
|
|
Eq,
|
|
)]
|
|
union U {
|
|
a: u8,
|
|
b: u16,
|
|
}
|
|
|
|
impl PartialEq for U { fn eq(&self, rhs: &Self) -> bool { true } }
|
|
|
|
#[derive(
|
|
Clone,
|
|
Copy,
|
|
Eq
|
|
)]
|
|
union W<T: Copy> {
|
|
a: T,
|
|
}
|
|
|
|
impl<T: Copy> PartialEq for W<T> { fn eq(&self, rhs: &Self) -> bool { true } }
|
|
|
|
fn main() {
|
|
let u = U { b: 0 };
|
|
let u1 = u;
|
|
let u2 = u.clone();
|
|
assert!(u1 == u2);
|
|
|
|
let w = W { a: 0 };
|
|
let w1 = w.clone();
|
|
assert!(w == w1);
|
|
}
|