| A negative implementation was marked as unsafe. | |
| Erroneous code example: | |
| ```compile_fail,E0198 | |
| struct Foo; | |
| unsafe impl !Clone for Foo { } // error! | |
| ``` | |
| A negative implementation is one that excludes a type from implementing a | |
| particular trait. Not being able to use a trait is always a safe operation, | |
| so negative implementations are always safe and never need to be marked as | |
| unsafe. | |
| This will compile: | |
| ```ignore (ignore auto_trait future compatibility warning) | |
| #![feature(auto_traits)] | |
| struct Foo; | |
| auto trait Enterprise {} | |
| impl !Enterprise for Foo { } | |
| ``` | |
| Please note that negative impls are only allowed for auto traits. |