Rollup merge of #39459 - phungleson:fix-short-hand-struct-doc, r=steveklabnik
Fix short hand struct doc Don't want to discredit @hngiang effort on this issue. I just want to lend a hand to fix this issue #38830, it is a very nice feature and is seemingly completed. Fixes #39096 r? @steveklabnik
This commit is contained in:
commit
d1f8c448ff
|
@ -117,6 +117,30 @@ fn main() {
|
|||
}
|
||||
```
|
||||
|
||||
Initialization of a data structure (struct, enum, union) can be simplified if
|
||||
fields of the data structure are initialized with variables which has same
|
||||
names as the fields.
|
||||
|
||||
```
|
||||
#![feature(field_init_shorthand)]
|
||||
|
||||
#[derive(Debug)]
|
||||
struct Person<'a> {
|
||||
name: &'a str,
|
||||
age: u8
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// Create struct with field init shorthand
|
||||
let name = "Peter";
|
||||
let age = 27;
|
||||
let peter = Person { name, age };
|
||||
|
||||
// Print debug struct
|
||||
println!("{:?}", peter);
|
||||
}
|
||||
```
|
||||
|
||||
# Update syntax
|
||||
|
||||
A `struct` can include `..` to indicate that you want to use a copy of some
|
||||
|
|
|
@ -2765,6 +2765,28 @@ let base = Point3d {x: 1, y: 2, z: 3};
|
|||
Point3d {y: 0, z: 10, .. base};
|
||||
```
|
||||
|
||||
#### Struct field init shorthand
|
||||
|
||||
When initializing a data structure (struct, enum, union) with named fields,
|
||||
allow writing `fieldname` as a shorthand for `fieldname: fieldname`. This
|
||||
allows a compact syntax for initialization, with less duplication.
|
||||
|
||||
In the initializer for a `struct` with named fields, a `union` with named
|
||||
fields, or an enum variant with named fields, accept an identifier `field` as a
|
||||
shorthand for `field: field`.
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
# #![feature(field_init_shorthand)]
|
||||
# struct Point3d { x: i32, y: i32, z: i32 }
|
||||
# let x = 0;
|
||||
# let y_value = 0;
|
||||
# let z = 0;
|
||||
Point3d { x: x, y: y_value, z: z };
|
||||
Point3d { x, y: y_value, z };
|
||||
```
|
||||
|
||||
### Block expressions
|
||||
|
||||
A _block expression_ is similar to a module in terms of the declarations that
|
||||
|
|
Loading…
Reference in New Issue