Rollup merge of #67422 - GuillaumeGomez:cleanup-err-codes, r=Dylan-DPC

Cleanup err codes

r? @Dylan-DPC
This commit is contained in:
Mazdak Farrokhzad 2019-12-21 15:29:45 +01:00 committed by GitHub
commit a01f956f98
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 9 deletions

View File

@ -1,5 +1,7 @@
An attempt was made to implement Drop on a trait, which is not allowed: only
structs and enums can implement Drop. An example causing this error:
Drop was implemented on a trait, which is not allowed: only structs and
enums can implement Drop.
Erroneous code example:
```compile_fail,E0120
trait MyTrait {}
@ -10,7 +12,7 @@ impl Drop for MyTrait {
```
A workaround for this problem is to wrap the trait up in a struct, and implement
Drop on that. An example is shown below:
Drop on that:
```
trait MyTrait {}
@ -22,7 +24,7 @@ impl <T: MyTrait> Drop for MyWrapper<T> {
```
Alternatively, wrapping trait objects requires something like the following:
Alternatively, wrapping trait objects requires something:
```
trait MyTrait {}

View File

@ -1,10 +1,24 @@
In order to be consistent with Rust's lack of global type inference,
type and const placeholders are disallowed by design in item signatures.
The type placeholder `_` was used within a type on an item's signature.
Examples of this error include:
Erroneous code example:
```compile_fail,E0121
fn foo() -> _ { 5 } // error, explicitly write out the return type instead
fn foo() -> _ { 5 } // error
static BAR: _ = "test"; // error, explicitly write out the type instead
static BAR: _ = "test"; // error
```
In those cases, you need to provide the type explicitly:
```
fn foo() -> i32 { 5 } // ok!
static BAR: &str = "test"; // ok!
```
The type placeholder `_` can be used outside item's signature as follows:
```
let x = "a4a".split('4')
.collect::<Vec<_>>(); // No need to precise the Vec's generic type.
```