File tree 2 files changed +25
-9
lines changed
src/librustc_error_codes/error_codes
2 files changed +25
-9
lines changed Original file line number Diff line number Diff line change 1
- An attempt was made to implement Drop on a trait, which is not allowed: only
2
- structs and enums can implement Drop. An example causing this error:
1
+ Drop was implemented on a trait, which is not allowed: only structs and
2
+ enums can implement Drop.
3
+
4
+ Erroneous code example:
3
5
4
6
``` compile_fail,E0120
5
7
trait MyTrait {}
@@ -10,7 +12,7 @@ impl Drop for MyTrait {
10
12
```
11
13
12
14
A workaround for this problem is to wrap the trait up in a struct, and implement
13
- Drop on that. An example is shown below :
15
+ Drop on that:
14
16
15
17
```
16
18
trait MyTrait {}
@@ -22,7 +24,7 @@ impl <T: MyTrait> Drop for MyWrapper<T> {
22
24
23
25
```
24
26
25
- Alternatively, wrapping trait objects requires something like the following :
27
+ Alternatively, wrapping trait objects requires something:
26
28
27
29
```
28
30
trait MyTrait {}
Original file line number Diff line number Diff line change 1
- In order to be consistent with Rust's lack of global type inference,
2
- type and const placeholders are disallowed by design in item signatures.
1
+ The type placeholder ` _ ` was used within a type on an item's signature.
3
2
4
- Examples of this error include :
3
+ Erroneous code example :
5
4
6
5
``` compile_fail,E0121
7
- fn foo() -> _ { 5 } // error, explicitly write out the return type instead
6
+ fn foo() -> _ { 5 } // error
8
7
9
- static BAR: _ = "test"; // error, explicitly write out the type instead
8
+ static BAR: _ = "test"; // error
9
+ ```
10
+
11
+ In those cases, you need to provide the type explicitly:
12
+
13
+ ```
14
+ fn foo() -> i32 { 5 } // ok!
15
+
16
+ static BAR: &str = "test"; // ok!
17
+ ```
18
+
19
+ The type placeholder ` _ ` can be used outside item's signature as follows:
20
+
21
+ ```
22
+ let x = "a4a".split('4')
23
+ .collect::<Vec<_>>(); // No need to precise the Vec's generic type.
10
24
```
You can’t perform that action at this time.
0 commit comments