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
[style guide's version sorting algorithm]: https://doc.rust-lang.org/nightly/style-guide/#sorting
42
-
- When parsing rustfmt configurations fails, rustfmt will now include the path to the toml file in the erorr message [#6302](https://github.com/rust-lang/rustfmt/issues/6302)
42
+
- When parsing rustfmt configurations fails, rustfmt will now include the path to the toml file in the error message [#6302](https://github.com/rust-lang/rustfmt/issues/6302)
43
43
44
44
### Added
45
45
- rustfmt now formats trailing where clauses in type aliases [#5887](https://github.com/rust-lang/rustfmt/pull/5887)
@@ -133,7 +133,7 @@
133
133
### Changed
134
134
135
135
-`hide_parse_errors` has been soft deprecated and it's been renamed to `show_parse_errors`[#5961](https://github.com/rust-lang/rustfmt/pull/5961).
136
-
- The diff output produced by `rustfmt --check` is more compatable with editors that support navigating directly to line numbers [#5971](https://github.com/rust-lang/rustfmt/pull/5971)
136
+
- The diff output produced by `rustfmt --check` is more compatible with editors that support navigating directly to line numbers [#5971](https://github.com/rust-lang/rustfmt/pull/5971)
137
137
- When using `version=Two`, the `trace!` macro from the [log crate] is now formatted similarly to `debug!`, `info!`, `warn!`, and `error!`[#5987](https://github.com/rust-lang/rustfmt/issues/5987).
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
@@ -1256,6 +1259,56 @@ Control the case of the letters in hexadecimal literal values
-**Stable**: No (tracking issue: [#6471](https://github.com/rust-lang/rustfmt/issues/6471))
1269
+
1270
+
#### `Preserve` (default):
1271
+
1272
+
Leave the literal as-is.
1273
+
1274
+
```rust
1275
+
fnmain() {
1276
+
letvalues= [1.0, 2., 3.0e10, 4f32];
1277
+
}
1278
+
```
1279
+
1280
+
#### `Always`:
1281
+
1282
+
Add a trailing zero to the literal:
1283
+
1284
+
```rust
1285
+
fnmain() {
1286
+
letvalues= [1.0, 2.0, 3.0e10, 4.0f32];
1287
+
}
1288
+
```
1289
+
1290
+
#### `IfNoPostfix`:
1291
+
1292
+
Add a trailing zero by default. If the literal contains an exponent or a suffix, the zero
1293
+
and the preceding period are removed:
1294
+
1295
+
```rust
1296
+
fnmain() {
1297
+
letvalues= [1.0, 2.0, 3e10, 4f32];
1298
+
}
1299
+
```
1300
+
1301
+
#### `Never`:
1302
+
1303
+
Remove the trailing zero. If the literal contains an exponent or a suffix, the preceding
1304
+
period is also removed:
1305
+
1306
+
```rust
1307
+
fnmain() {
1308
+
letvalues= [1., 2., 3e10, 4f32];
1309
+
}
1310
+
```
1311
+
1259
1312
## `hide_parse_errors`
1260
1313
1261
1314
This option is deprecated and has been renamed to `show_parse_errors` to avoid confusion around the double negative default of `hide_parse_errors=false`.
@@ -2362,9 +2415,62 @@ Require a specific version of rustfmt. If you want to make sure that the
2362
2415
specific version of rustfmt is used in your CI, use this option.
2363
2416
2364
2417
-**Default value**: `CARGO_PKG_VERSION`
2365
-
-**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/).
2366
2419
-**Stable**: No (tracking issue: [#3386](https://github.com/rust-lang/rustfmt/issues/3386))
2367
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
+
2368
2474
## `short_array_element_width_threshold`
2369
2475
2370
2476
The width threshold for an array element to be considered "short".
@@ -2700,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