You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: clarify the editions behavior and it's consequences on formatting (#6486)
Update `style_edition` and `edition` entries in `Configurations.md`, and encourage users to explicitly configure `style_edition` and `edition` in `rustfmt.toml` to ensure rustfmt and `cargo fmt` produce the same formatting.
Rustfmt is able to pick up the edition used by reading the `Cargo.toml` file if executed
541
-
through the Cargo's formatting tool `cargo fmt`. Otherwise, the edition needs to be specified
542
-
in your config file:
540
+
The `edition` option determines the Rust language edition used for parsing the code. This is important for syntax compatibility but does not directly control formatting behavior (see [style_edition](#style_edition)).
541
+
542
+
When running `cargo fmt`, the `edition` is automatically read from the `Cargo.toml` file. However, when running `rustfmt` directly the `edition` defaults to 2015 if not explicitly configured. For consistent parsing between rustfmt and `cargo fmt` you should configure the `edition`.
543
+
For example in your `rustfmt.toml` file:
543
544
544
545
```toml
545
546
edition = "2018"
546
547
```
547
548
549
+
Alternatively, you can use the `--edition` flag when running `rustfmt` directly.
550
+
548
551
## `empty_item_single_line`
549
552
550
553
Put empty-body functions and impls on a single line
@@ -2803,6 +2806,20 @@ Controls the edition of the [Rust Style Guide] to use for formatting ([RFC 3338]
This option is inferred from the [`edition`](#edition) if not specified.
2810
+
2811
+
See [Rust Style Editions] for details on formatting differences between style editions.
2812
+
rustfmt has a default style edition of `2015` while `cargo fmt` infers the style edition from the `edition` set in `Cargo.toml`. This can lead to inconsistencies between `rustfmt` and `cargo fmt` if the style edition is not explicitly configured.
2813
+
2814
+
To ensure consistent formatting, it is recommended to specify the `style_edition` in a `rustfmt.toml` configuration file. For example:
2815
+
2816
+
```toml
2817
+
style_edition = "2024"
2818
+
```
2819
+
2820
+
Alternatively, you can use the `--style-edition` flag when running `rustfmt` directly.
Copy file name to clipboardExpand all lines: README.md
+27-3
Original file line number
Diff line number
Diff line change
@@ -170,12 +170,36 @@ See [GitHub page](https://rust-lang.github.io/rustfmt/) for details.
170
170
171
171
### Rust's Editions
172
172
173
-
Rustfmt is able to pick up the edition used by reading the `Cargo.toml` file if
174
-
executed through the Cargo's formatting tool `cargo fmt`. Otherwise, the edition
175
-
needs to be specified in `rustfmt.toml`, e.g., with `edition = "2018"`.
173
+
The `edition` option determines the Rust language edition used for parsing the code. This is important for syntax compatibility but does not directly control formatting behavior (see [Style Editions](#style-editions)).
174
+
175
+
When running `cargo fmt`, the `edition` is automatically read from the `Cargo.toml` file. However, when running `rustfmt` directly the `edition` defaults to 2015 if not explicitly configured. For consistent parsing between rustfmt and `cargo fmt` you should configure the `edition`.
176
+
For example in your `rustfmt.toml` file:
177
+
178
+
```toml
179
+
edition = "2018"
180
+
```
181
+
182
+
### Style Editions
183
+
184
+
This option is inferred from the [`edition`](#rusts-editions) if not specified.
185
+
186
+
See [Rust Style Editions] for details on formatting differences between style editions.
187
+
rustfmt has a default style edition of `2015` while `cargo fmt` infers the style edition from the `edition` set in `Cargo.toml`. This can lead to inconsistencies between `rustfmt` and `cargo fmt` if the style edition is not explicitly configured.
188
+
189
+
To ensure consistent formatting, it is recommended to specify the `style_edition` in a `rustfmt.toml` configuration file. For example:
* To ensure consistent parsing between `cargo fmt` and `rustfmt`, you should configure the [`edition`](#rusts-editions) in your `rustfmt.toml` file.
201
+
* To ensure consistent formatting between `cargo fmt` and `rustfmt`, you should configure the [`style_edition`](#style-editions) in your `rustfmt.toml` file.
202
+
179
203
* For things you do not want rustfmt to mangle, use `#[rustfmt::skip]`
180
204
* To prevent rustfmt from formatting a macro or an attribute,
181
205
use `#[rustfmt::skip::macros(target_macro_name)]` or
0 commit comments