Tutorial: make struct section more coherent
In struct section of tutorial, make everything more coherent and clear by always using "struct Point". Also, do not prematurely introduce pointers and arrays. Fixes #5240 Signed-off-by: Luca Bruno <lucab@debian.org>
This commit is contained in:
parent
5ae76b5bab
commit
f9bb7b7768
1 changed files with 18 additions and 9 deletions
|
@ -579,21 +579,30 @@ Structs are quite similar to C structs and are even laid out the same way in
|
||||||
memory (so you can read from a Rust struct in C, and vice-versa). Use the dot
|
memory (so you can read from a Rust struct in C, and vice-versa). Use the dot
|
||||||
operator to access struct fields, as in `mypoint.x`.
|
operator to access struct fields, as in `mypoint.x`.
|
||||||
|
|
||||||
|
~~~~
|
||||||
|
struct Point {
|
||||||
|
x: float,
|
||||||
|
y: float
|
||||||
|
}
|
||||||
|
~~~~
|
||||||
|
|
||||||
Inherited mutability means that any field of a struct may be mutable, if the
|
Inherited mutability means that any field of a struct may be mutable, if the
|
||||||
struct is in a mutable slot (or a field of a struct in a mutable slot, and
|
struct is in a mutable slot (or a field of a struct in a mutable slot, and
|
||||||
so forth).
|
so forth).
|
||||||
|
|
||||||
~~~~
|
With a value (say, `mypoint`) of such a type in a mutable location, you can do
|
||||||
struct Stack {
|
`mypoint.y += 1.0`. But in an immutable location, such an assignment to a
|
||||||
content: ~[int],
|
|
||||||
head: uint
|
|
||||||
}
|
|
||||||
~~~~
|
|
||||||
|
|
||||||
With a value (say, `mystack`) of such a type in a mutable location, you can do
|
|
||||||
`mystack.head += 1`. But in an immutable location, such an assignment to a
|
|
||||||
struct without inherited mutability would result in a type error.
|
struct without inherited mutability would result in a type error.
|
||||||
|
|
||||||
|
~~~~ {.xfail-test}
|
||||||
|
# struct Point { x: float, y: float }
|
||||||
|
let mut mypoint = Point { x: 1.0, y: 1.0 };
|
||||||
|
let origin = Point { x: 0.0, y: 0.0 };
|
||||||
|
|
||||||
|
mypoint.y += 1.0; // mypoint is mutable, and its fields as well
|
||||||
|
origin.y += 1.0; // ERROR: assigning to immutable field
|
||||||
|
~~~~
|
||||||
|
|
||||||
`match` patterns destructure structs. The basic syntax is
|
`match` patterns destructure structs. The basic syntax is
|
||||||
`Name { fieldname: pattern, ... }`:
|
`Name { fieldname: pattern, ... }`:
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue