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.
29 lines
522 B
Rust
29 lines
522 B
Rust
#![feature(negative_impls)]
|
|
|
|
use std::marker::Copy;
|
|
|
|
enum TestE {
|
|
A,
|
|
}
|
|
|
|
struct MyType;
|
|
|
|
struct NotSync;
|
|
impl !Sync for NotSync {}
|
|
|
|
unsafe impl Send for TestE {}
|
|
unsafe impl Send for MyType {}
|
|
unsafe impl Send for (MyType, MyType) {}
|
|
//~^ ERROR E0117
|
|
|
|
unsafe impl Send for &'static NotSync {}
|
|
//~^ ERROR E0321
|
|
|
|
unsafe impl Send for [MyType] {}
|
|
//~^ ERROR E0117
|
|
|
|
unsafe impl Send for &'static [NotSync] {}
|
|
//~^ ERROR conflicting implementations of trait
|
|
//~| ERROR only traits defined in the current crate
|
|
|
|
fn main() {}
|