| // rustfmt-use_field_init_shorthand: true | |
| foo!(Foo { a: a }); | |
| fn main() { | |
| foo!(Foo { a: a }); | |
| foo![Foo { a: a }]; | |
| foo! { Foo { a: a } } | |
| seq!(Task { a }); | |
| seq!(Task { a: b }); | |
| seq!(Task { a: 1 }); | |
| seq!(Task { a: a, ..base }); | |
| seq!(Task { #[attr] a: a }); | |
| seq!(Task { a: Inner { b: b } }); | |
| seq!(Task { a: a }.build()); | |
| let _ = Foo { a: seq!(Task { b: b }) }; | |
| // `vec!` is formatted as an array, so the shorthand still applies. | |
| vec![Foo { a: a }]; | |
| vec![vec![Foo { a: a }]]; | |
| foo!(vec![Foo { a: a }]); | |
| // std/core prelude macros, where the shorthand would be safe. | |
| assert_eq!(Foo { a: a }, x); | |
| debug_assert_eq!(Foo { a: a }, x); | |
| matches!(v, Foo { a: a }); | |
| assert_matches!(v, Foo { a: a }); | |
| assert!(matches!(v, Foo { a: a })); | |
| // A shorthand already written by hand is kept. | |
| assert_eq!(Foo { a }, x); | |
| debug_assert_eq!(Foo { a }, x); | |
| matches!(v, Foo { a }); | |
| assert_matches!(v, Foo { a }); | |
| assert!(matches!(v, Foo { a })); | |
| let _ = Foo { a: a }; | |
| let _ = Foo { a: Inner { b: b } }; | |
| } |