Clean up E0121 long explanation

This commit is contained in:
Guillaume Gomez 2019-12-19 13:45:36 +01:00
parent 020be74f6b
commit 94d207f4b2

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 withing 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.
```