Clean up E0199 explanation

This commit is contained in:
Guillaume Gomez 2020-01-17 19:54:07 +01:00
parent bf84eb538f
commit e8a4b9319c

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!
```