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
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
@@ -2412,9 +2415,62 @@ Require a specific version of rustfmt. If you want to make sure that the
2412
2415
specific version of rustfmt is used in your CI, use this option.
2413
2416
2414
2417
-**Default value**: `CARGO_PKG_VERSION`
2415
-
-**Possible values**: any published version (e.g. `"0.3.8"`)
2418
+
-**Possible values**: `semver` compliant values, such as defined on [semver.org](https://semver.org/).
2416
2419
-**Stable**: No (tracking issue: [#3386](https://github.com/rust-lang/rustfmt/issues/3386))
2417
2420
2421
+
#### Match on exact version:
2422
+
2423
+
```toml
2424
+
required_version="1.0.0"
2425
+
```
2426
+
2427
+
#### Higher or equal to:
2428
+
2429
+
```toml
2430
+
required_version=">=1.0.0"
2431
+
```
2432
+
2433
+
#### Lower or equal to:
2434
+
2435
+
```toml
2436
+
required_version="<=1.0.0"
2437
+
```
2438
+
2439
+
#### New minor or patch versions:
2440
+
2441
+
```toml
2442
+
required_version="^1.0.0"
2443
+
```
2444
+
2445
+
#### New patch versions:
2446
+
2447
+
```toml
2448
+
required_version="~1.0.0"
2449
+
```
2450
+
2451
+
#### Wildcard:
2452
+
2453
+
```toml
2454
+
required_version="*"# matches any version.
2455
+
required_version="1.*"# matches any version with the same major version
2456
+
required_version="1.0.*"# matches any version with the same major and minor version
2457
+
```
2458
+
2459
+
#### Multiple versions to match:
2460
+
2461
+
A comma separated list of version requirements.
2462
+
The match succeeds when the current rustfmt version matches all version requirements.
2463
+
2464
+
The one notable exception is that a wildcard matching any version cannot be used in the list.
2465
+
For example, `*, <1.0.0` will always fail.
2466
+
2467
+
Additionally, the version match will always fail if any of the version requirements contradict themselves.
2468
+
Some examples of contradictory requirements are `1.*, >2.0.0`, `1.0.*, >2.0.0` and `<1.5.0, >1.10.*`.
2469
+
2470
+
```toml
2471
+
required_version=">=1.0.0, <2.0.0"
2472
+
```
2473
+
2418
2474
## `short_array_element_width_threshold`
2419
2475
2420
2476
The width threshold for an array element to be considered "short".
@@ -2750,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-3Lines changed: 27 additions & 3 deletions
Display the source diff
Display the rich diff
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