Add error explanation for E0070
This commit is contained in:
parent
2dd5ad0be8
commit
c795406e19
1 changed files with 51 additions and 4 deletions
|
|
@ -124,8 +124,8 @@ be specified exactly one time.
|
|||
|
||||
E0063: r##"
|
||||
This error indicates that during an attempt to build a struct or struct-like
|
||||
enum variant, one of the fields was not provided. Each field should be specified
|
||||
exactly once.
|
||||
enum variant, one of the fields was not provided. Each field should be
|
||||
specified exactly once.
|
||||
"##,
|
||||
|
||||
E0066: r##"
|
||||
|
|
@ -141,7 +141,8 @@ and [RFC 809] for more details.
|
|||
E0067: r##"
|
||||
The left-hand side of an assignment operator must be an lvalue expression. An
|
||||
lvalue expression represents a memory location and includes item paths (ie,
|
||||
namespaced variables), dereferences, indexing expressions, and field references.
|
||||
namespaced variables), dereferences, indexing expressions, and field
|
||||
references.
|
||||
|
||||
```
|
||||
use std::collections::LinkedList;
|
||||
|
|
@ -170,6 +171,53 @@ Since `return;` is just like `return ();`, there is a mismatch between the
|
|||
function's return type and the value being returned.
|
||||
"##,
|
||||
|
||||
E0070: r##"
|
||||
The left-hand side of an assignment operator must be an lvalue expression. An
|
||||
lvalue expression represents a memory location and can be a variable (with
|
||||
optional namespacing), a dereference, an indexing expression or a field
|
||||
reference.
|
||||
|
||||
More details can be found here:
|
||||
https://doc.rust-lang.org/reference.html#lvalues,-rvalues-and-temporaries
|
||||
|
||||
Now, we can go further. Here are some bad examples:
|
||||
```
|
||||
struct SomeStruct {
|
||||
x: i32,
|
||||
y: i32
|
||||
}
|
||||
const SOME_CONST : i32 = 12;
|
||||
|
||||
fn some_other_func() {}
|
||||
|
||||
fn some_function() {
|
||||
SOME_CONST = 14; // error : a constant value cannot be changed!
|
||||
1 = 3; // error : 1 isn't a valid lvalue!
|
||||
some_other_func() = 4; // error : we can't assign value to a function!
|
||||
SomeStruct.x = 12; // error : SomeStruct a structure name but it is used
|
||||
// like a variable!
|
||||
}
|
||||
```
|
||||
|
||||
And now let's give good examples:
|
||||
|
||||
```
|
||||
struct SomeStruct {
|
||||
x: i32,
|
||||
y: i32
|
||||
}
|
||||
let mut s = SomeStruct {x: 0, y: 0};
|
||||
|
||||
s.x = 3; // that's good !
|
||||
|
||||
// ...
|
||||
|
||||
fn some_func(x: &mut i32) {
|
||||
*x = 12; // that's good !
|
||||
}
|
||||
```
|
||||
"##,
|
||||
|
||||
E0072: r##"
|
||||
When defining a recursive struct or enum, any use of the type being defined
|
||||
from inside the definition must occur behind a pointer (like `Box` or `&`).
|
||||
|
|
@ -779,7 +827,6 @@ register_diagnostics! {
|
|||
E0060,
|
||||
E0061,
|
||||
E0068,
|
||||
E0070,
|
||||
E0071,
|
||||
E0074,
|
||||
E0075,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue