From: Yuki Okushi Date: Mon, 22 Feb 2021 09:26:07 +0000 (+0900) Subject: Rollup merge of #82287 - r00ster91:field_name_and, r=petrochenkov X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=20c1fa17707e6cdd202a9a720f7dfe0000ecb74e;p=rust.git Rollup merge of #82287 - r00ster91:field_name_and, r=petrochenkov Make "missing field" error message more natural ```rust struct A { x: i32, y: i32, z: i32, } fn main() { A { }; } ``` ``` error[E0063]: missing fields `x`, `y`, `z` in initializer of `A` --> src/main.rs:8:5 | 8 | A { }; | ^ missing `x`, `y`, `z` ``` This error is now: ``` error[E0063]: missing fields `x`, `y` and `z` in initializer of `A` --> src/main.rs:8:5 | 8 | A { }; | ^ missing `x`, `y` and `z` ``` I thought it looked nicer and more natural this way. Also, if there is >3 fields missing, there is an "and" as well ("missing \`x\`, \`y\`, \`z\` *and* 1 other field"), but for <=3 there is not. As such it improves consistency too. As for the implementation, originally I ended up with a chunky `push_str` algorithm but then I figured I could just do the formatting manually since it's just 3 field names at maximum. It is comparatively readable. As a sidenote, one thing I was wondering about is, isn't there more cases where you have a list of things like field names? Maybe this whole thing can at some point later be made into a more general function to be used in multiple areas. --- 20c1fa17707e6cdd202a9a720f7dfe0000ecb74e