Issue title: RFC: Add syntaxic sugar for struct expressions fields from variables of the same name
 Issue body: <a href="https://github.com/SimonSapin"><img src="https://avatars.githubusercontent.com/u/291359?v=2" align="left" width="96" height="96" hspace="10"></img></a> **Issue by [SimonSapin](https://github.com/SimonSapin)**
_Sunday Feb 02, 2014 at 12:29 GMT_

_For earlier discussion, see https://github.com/rust-lang/rust/issues/11990_

_This issue was labelled with: A-parser, B-RFC in the Rust repository_

---

The general syntax for a struct pattern is: 

```
StructName { field_name: new_variable_name }
```

But when the desired variable name is the same as the field name, it does not need to be repeated:

```
let MyStruct { name } = struct_value;
do_something_with(name);
```

This proposal is to add similar syntax sugar for struct expressions:

```
let name = …;
let struct_value = MyStruct { name };
```

… would be the same as: 

```
let name = …;
let struct_value = MyStruct { name: name };
```

CC: @eddyb

 Comments: 
 Comment 0: This was discussed in https://github.com/rust-lang/meeting-minutes/blob/master/weekly-meetings/2014-02-11.md#binding-in-struct-patterns

There were some concerns about ambiguities in e.g. `for x in Foo { x } { }`, but the grammar was changed since then (I think?) so that the desugared form of this would not be valid either.

``` rust
fn main() {
    struct Foo { x: () }
    impl Iterator<()> for Foo {
        fn next(&mut self) -> Option<()> { None }
    }
    let x = ();
    for i in Foo { x: x } { }
}
```

```
a.rs:7:21: 7:22 error: expected one of `;`, `}`, found `:`
a.rs:7     for i in Foo { x: x } { }
```

CC @nick29581

 Comment 1: Is this still unambiguous with [type ascription](https://github.com/rust-lang/rust/issues/23416)?
 Comment 2: @theemathas: it is still unambiguous; the full form of struct initialisation is defined appropriately so that type ascription works, and the additional, simpler form that this permits cannot have any colons (it’s commas and identifiers only), so there is no interaction with the type ascription feature.
 Comment 3: So, this feature was suggested (https://github.com/rust-lang/rust/issues/11990) and then prototyped ( https://github.com/rust-lang/rust/pull/11994 ) back in February 2014

The team collectively declined to adopt the feature for Rust 1.0 : https://github.com/rust-lang/rust/issues/11990#issuecomment-34791865 (again, back in Febuary 2014).

But then in June 2014, we accepted RFC 92, that restricted the use of struct literals to only appear in *certain* expression positions.
 * RFC text: https://github.com/rust-lang/rfcs/blob/master/text/0092-struct-grammar.md
 * RFC PR: https://github.com/rust-lang/rfcs/pull/92 (May 2014)
 * Implementation: https://github.com/rust-lang/rust/issues/14885 (also June 2014)

I believe that with the restriction specified by RFC 92, we could readily add this feature to the language backwards compatibly; that is, the parsing ambiguity issues are no longer present, I think.
 * Parsing ambiguity was the primary reason we declined to do this according to https://github.com/rust-lang/meeting-minutes/blob/master/weekly-meetings/2014-02-11.md#binding-in-struct-patterns 
 * There were other more abstract reasons also discussed there (e.g. is such a form "hygienic"), but I think all those points are debatable. In particular, even king of hygiene @dherman said "it's such great sugar that it's hard to avoid"

I'm going to assign this to myself as a reminder to try to draft up a formal RFC for it at some point in the (hopefully near) future.
 Comment 4: Sounds great, thanks for championing this Felix!
 Comment 5: In feature we will have feature *Rename variable* which will break code or should be insert field name.
 Comment 6: @KalitaAlexey I infer you are talking about an IDE feature.

I think the language design should not hinder itself on how IDE features are to be implemented

 Comment 7: @pnkfelix 
Any updates? Do you still plan to write an RFC?
Since implementation is trivial, it's only a matter of decision.

 Comment 8: @petrochenkov I've been distracted. Anyone else is free to draft up an RFC; I won't be upset if that happens.

 Comment 9: This is implemented and stabilized in https://github.com/rust-lang/rust/pull/39761
ping @SimonSapin @pnkfelix for closing
{'source': 'GithubIssues', 'repo_name_with_owner': 'rust-lang/rfcs', 'issue_id': 43716233, 'repo_stars': 4760.0}