They used to be covered by `optin_builtin_traits` but negative impls are now applicable to all traits, not just auto traits. This also adds docs in the unstable book for the current state of auto traits.
38 lines
674 B
Rust
38 lines
674 B
Rust
#![feature(negative_impls)]
|
|
|
|
use std::marker::Copy;
|
|
|
|
impl Copy for i32 {}
|
|
//~^ ERROR E0119
|
|
//~| ERROR E0117
|
|
enum TestE {
|
|
A
|
|
}
|
|
|
|
struct MyType;
|
|
|
|
struct NotSync;
|
|
impl !Sync for NotSync {}
|
|
|
|
impl Copy for TestE {}
|
|
impl Clone for TestE { fn clone(&self) -> Self { *self } }
|
|
|
|
impl Copy for MyType {}
|
|
|
|
impl Copy for &'static mut MyType {}
|
|
//~^ ERROR E0206
|
|
impl Clone for MyType { fn clone(&self) -> Self { *self } }
|
|
|
|
impl Copy for (MyType, MyType) {}
|
|
//~^ ERROR E0206
|
|
//~| ERROR E0117
|
|
impl Copy for &'static NotSync {}
|
|
//~^ ERROR E0119
|
|
impl Copy for [MyType] {}
|
|
//~^ ERROR E0206
|
|
//~| ERROR E0117
|
|
impl Copy for &'static [NotSync] {}
|
|
//~^ ERROR E0119
|
|
//~| ERROR E0117
|
|
fn main() {
|
|
}
|