Rollup merge of #68317 - GuillaumeGomez:clean-up-e0199, r=Dylan-DPC

Clean up E0199 explanation

r? @Dylan-DPC
This commit is contained in:
Tyler Mandry 2020-01-17 17:28:23 -08:00 committed by GitHub
commit 14d779c3f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,14 +1,23 @@
Safe traits should not have unsafe implementations, therefore marking an
implementation for a safe trait unsafe will cause a compiler error. Removing
the unsafe marker on the trait noted in the error will resolve this problem.
A trait implementation was marked as unsafe while the trait is safe.
Erroneous code example:
```compile_fail,E0199
struct Foo;
trait Bar { }
// this won't compile because Bar is safe
unsafe impl Bar for Foo { }
// this will compile
impl Bar for Foo { }
unsafe impl Bar for Foo { } // error!
```
Safe traits should not have unsafe implementations, therefore marking an
implementation for a safe trait unsafe will cause a compiler error. Removing
the unsafe marker on the trait noted in the error will resolve this problem:
```
struct Foo;
trait Bar { }
impl Bar for Foo { } // ok!
```