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:
Corey Farwell 2017-02-07 22:54:26 -05:00 committed by GitHub
commit d1f8c448ff
2 changed files with 46 additions and 0 deletions

View File

@ -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

View File

@ -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