42 lines
757 B
Rust
42 lines
757 B
Rust
![]() |
//@ compile-flags: --crate-type=lib
|
||
|
|
||
|
#![feature(unsafe_fields)]
|
||
|
#![allow(incomplete_features)]
|
||
|
#![deny(missing_copy_implementations)]
|
||
|
|
||
|
mod good_safe_impl {
|
||
|
enum SafeEnum {
|
||
|
Safe(u8),
|
||
|
}
|
||
|
|
||
|
impl Copy for SafeEnum {}
|
||
|
}
|
||
|
|
||
|
mod bad_safe_impl {
|
||
|
enum UnsafeEnum {
|
||
|
Safe(u8),
|
||
|
Unsafe { unsafe field: u8 },
|
||
|
}
|
||
|
|
||
|
impl Copy for UnsafeEnum {}
|
||
|
//~^ ERROR the trait `Copy` requires an `unsafe impl` declaration
|
||
|
}
|
||
|
|
||
|
mod good_unsafe_impl {
|
||
|
enum UnsafeEnum {
|
||
|
Safe(u8),
|
||
|
Unsafe { unsafe field: u8 },
|
||
|
}
|
||
|
|
||
|
unsafe impl Copy for UnsafeEnum {}
|
||
|
}
|
||
|
|
||
|
mod bad_unsafe_impl {
|
||
|
enum SafeEnum {
|
||
|
Safe(u8),
|
||
|
}
|
||
|
|
||
|
unsafe impl Copy for SafeEnum {}
|
||
|
//~^ ERROR implementing the trait `Copy` is not unsafe
|
||
|
}
|