Each configuration option is either stable or unstable.
Stable options can be used directly, while unstable options are opt-in.
-To enable unstable options, set `unstable_features = true` in `rustfmt.toml` or pass `--unstable-options` to rustfmt.
+To enable unstable options, set `unstable_features = true` in `rustfmt.toml` or pass `--unstable-features` to rustfmt.
# Configuration Options
#### `"Block"` (default):
```rust
-if lorem_ipsum &&
- dolor_sit &&
- amet_consectetur
-{
- // ...
+fn main() {
+ if lorem_ipsum && dolor_sit && amet_consectetur && lorem_sit && dolor_consectetur && amet_ipsum
+ && lorem_consectetur
+ {
+ // ...
+ }
}
```
#### `"Visual"`:
```rust
-if lorem_ipsum &&
- dolor_sit &&
- amet_consectetur {
- // ...
+fn main() {
+ if lorem_ipsum && dolor_sit && amet_consectetur && lorem_sit && dolor_consectetur && amet_ipsum
+ && lorem_consectetur
+ {
+ // ...
+ }
}
```
## `error_on_line_overflow`
-Error if unable to get all lines within `max_width`
+Error if unable to get all lines within `max_width`, except for comments and string literals.
- **Default value**: `true`
- **Possible values**: `true`, `false`
See also [`max_width`](#max_width).
-## `error_on_line_overflow_comments`
+## `error_on_unformatted`
-Error if unable to get all comment lines within `comment_width`.
+Error if unable to get comments or string literals within `max_width`, or they are left with
+trailing whitespaces.
-- **Default value**: `true`
+- **Default value**: `false`
- **Possible values**: `true`, `false`
- **Stable**: No
-See also [`comment_width`](#comment_width).
-
## `fn_args_density`
Argument density in functions
```rust
extern crate lorem;
extern crate ipsum;
+
extern crate dolor;
extern crate sit;
```
- **Possible values**: `true`, `false`
- **Stable**: No
-**Note:** This option takes effect only when [`reorder_imports`](#reorder_imports) is set to `true`.
-
#### `true` (default):
+**Note:** This only takes effect when [`reorder_extern_crates`](#reorder_extern_crates) is set to `true`.
+
```rust
extern crate a;
extern crate b;
#### `false`:
+This value has no influence beyond the effect of the [`reorder_extern_crates`](#reorder_extern_crates) option. Set [`reorder_extern_crates`](#reorder_extern_crates) to `false` if you do not want `extern crate` groups to be collapsed and ordered.
+
+## `reorder_modules`
+
+Reorder `mod` declarations alphabetically in group.
+
+- **Default value**: `true`
+- **Possible values**: `true`, `false`
+- **Stable**: No
+
+#### `true`
+
```rust
-extern crate b;
-extern crate a;
+mod a;
+mod b;
-extern crate lorem;
-extern crate ipsum;
-extern crate dolor;
-extern crate sit;
+mod dolor;
+mod ipsum;
+mod lorem;
+mod sit;
```
-See also [`reorder_extern_crates`](#reorder_extern_crates).
+#### `false`
+
+```rust
+mod b;
+mod a;
+
+mod lorem;
+mod ipsum;
+mod dolor;
+mod sit;
+```
+
+**Note** `mod` with `#[macro_export]` will not be reordered since that could change the semantic
+of the original source code.
## `report_todo`
#### `true` (default):
```rust
-let lorem = Lorem { ipsum: dolor, sit: amet };
+fn main() {
+ let lorem = Lorem { foo: bar, baz: ofo };
+}
```
#### `false`:
```rust
fn main() {
let lorem = Lorem {
- ipsum: dolor,
- sit: amet,
+ foo: bar,
+ baz: ofo,
};
}
```
}
```
+## `use_field_init_shorthand`
+
+Use field initialize shorthand if possible.
+
+- **Default value**: `false`
+- **Possible values**: `true`, `false`
+- **Stable**: No
+
+#### `false` (default):
+
+```rust
+struct Foo {
+ x: u32,
+ y: u32,
+ z: u32,
+}
+
+fn main() {
+ let x = 1;
+ let y = 2;
+ let z = 3;
+ let a = Foo { x: x, y: y, z: z };
+}
+```
+
+#### `true`:
+
+```rust
+struct Foo {
+ x: u32,
+ y: u32,
+ z: u32,
+}
+
+fn main() {
+ let x = 1;
+ let y = 2;
+ let z = 3;
+ let a = Foo { x, y, z };
+}
+```
+
## `use_try_shorthand`
Replace uses of the try! macro by the ? shorthand
#### `true` (default):
```rust
-match lorem {
- true => {
- foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(x)
+fn main() {
+ match lorem {
+ true => {
+ foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(x)
+ }
+ false => println!("{}", sit),
}
- false => println!("{}", sit),
}
```
#### `false`:
```rust
-match lorem {
- true =>
- foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(x),
- false => println!("{}", sit),
+fn main() {
+ match lorem {
+ true =>
+ foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(x),
+ false => println!("{}", sit),
+ }
}
```
Original Code:
```rust
+#![rustfmt_skip]
+
fn foo() {
println!("a");
}
Original Code (rustfmt will not change it with the default value of `0`):
```rust
+#![rustfmt_skip]
+
fn foo() {
println!("a");
}
println!("c");
}
```
+
+## `remove_blank_lines_at_start_or_end_of_block`
+
+Remove blank lines at the start or the end of a block.
+
+- **Default value**: `true`
+- **Possible values**: `true`, `false`
+- **Stable**: No
+
+#### `true`
+
+```rust
+fn foo() {
+ let msg = {
+ let mut str = String::new();
+ str.push_str("hello, ");
+ str.push_str("world!");
+ str
+ };
+ println!("{}", msg);
+}
+```
+
+#### `false`
+
+```rust
+fn foo() {
+
+ let msg = {
+
+ let mut str = String::new();
+ str.push_str("hello, ");
+ str.push_str("world!");
+ str
+
+ };
+ println!("{}", msg);
+
+}
+```
+
+## `required_version`
+
+Require a specific version of rustfmt. If you want to make sure that the
+specific version of rustfmt is used in your CI, use this option.
+
+- **Default value**: `CARGO_PKG_VERSION`
+- **Possible values**: any published version (e.g. `"0.3.8"`)
+- **Stable**: No
+
+## `hide_parse_errors`
+
+Do not show parse errors if the parser failed to parse files.
+
+- **Default value**: `false`
+- **Possible values**: `true`, `false`
+- **Stable**: No
+
+## `color`
+
+Whether to use colored output or not.
+
+- **Default value**: `"Auto"`
+- **Possible values**: "Auto", "Always", "Never"
+- **Stable**: No
+
+## `unstable_features`
+
+Enable unstable featuers on stable channel.
+
+- **Default value**: `false`
+- **Possible values**: `true`, `false`
+- **Stable**: Yes
+
+## `license_template_path`
+
+Check whether beginnings of files match a license template.
+
+- **Default value**: `""``
+- **Possible values**: path to a license template file
+- **Stable**: No
+
+A license template is a plain text file which is matched literally against the
+beginning of each source file, except for `{}`-delimited blocks, which are
+matched as regular expressions. The following license template therefore
+matches strings like `// Copyright 2017 The Rust Project Developers.`, `//
+Copyright 2018 The Rust Project Developers.`, etc.:
+
+```
+// Copyright {\d+} The Rust Project Developers.
+```
+
+`\{`, `\}` and `\\` match literal braces / backslashes.