A possible content of `rustfmt.toml` or `.rustfmt.toml` might look like this:
```toml
-array_layout = "Block"
-array_width = 80
+indent_style = "Block"
reorder_imported_names = true
```
Below you find a detailed visual guide on all the supported configuration options of rustfmt:
-## `array_horizontal_layout_threshold`
-How many elements array must have before rustfmt uses horizontal layout.
-Use this option to prevent a huge array from being vertically formatted.
+## `indent_style`
-- **Default value**: `0`
-- **Possible values**: any positive integer
+Indent on expressions or items.
-**Note:** A value of `0` results in [`array_layout`](#array_layout) being applied regardless of a line's width.
+- **Default value**: `"Block"`
+- **Possible values**: `"Block"`, `"Visual"`
-#### `0` (default):
+### Array
+
+#### `"Block"` (default):
```rust
-// Each element will be placed on its own line.
-let a = vec![
- 0,
- 1,
- 2,
- 3,
- 4,
- ...
- 999,
- 1000,
+let lorem = vec![
+ "ipsum",
+ "dolor",
+ "sit",
+ "amet",
+ "consectetur",
+ "adipiscing",
+ "elit",
];
```
-#### `1000`:
+#### `"Visual"`:
```rust
-// Each element will be placed on the same line as much as possible.
-let a = vec![
- 0, 1, 2, 3, 4, ...
- ..., 999, 1000,
-];
+let lorem = vec!["ipsum",
+ "dolor",
+ "sit",
+ "amet",
+ "consectetur",
+ "adipiscing",
+ "elit"];
```
-## `array_layout`
+### Control flow
-Indent on arrays
+#### `"Block"` (default):
-- **Default value**: `"Block"`
-- **Possible values**: `"Block"`, `"Visual"`
+```rust
+if lorem_ipsum &&
+ dolor_sit &&
+ amet_consectetur
+{
+ // ...
+}
+```
+
+#### `"Visual"`:
+
+```rust
+if lorem_ipsum &&
+ dolor_sit &&
+ amet_consectetur {
+ // ...
+}
+```
+
+See also: [`control_brace_style`](#control_brace_style).
+
+### Function arguments
#### `"Block"` (default):
```rust
-let lorem = vec![
+fn lorem() {}
+
+fn lorem(ipsum: usize) {}
+
+fn lorem(
+ ipsum: usize,
+ dolor: usize,
+ sit: usize,
+ amet: usize,
+ consectetur: usize,
+ adipiscing: usize,
+ elit: usize,
+) {
+ // body
+}
+```
+
+#### `"Visual"`:
+
+```rust
+fn lorem() {}
+
+fn lorem(ipsum: usize) {}
+
+fn lorem(ipsum: usize,
+ dolor: usize,
+ sit: usize,
+ amet: usize,
+ consectetur: usize,
+ adipiscing: usize,
+ elit: usize) {
+ // body
+}
+```
+
+### Function calls
+
+#### `"Block"` (default):
+
+```rust
+lorem(
+ "lorem",
"ipsum",
"dolor",
"sit",
"consectetur",
"adipiscing",
"elit",
-];
+);
```
#### `"Visual"`:
```rust
-let lorem = vec!["ipsum",
- "dolor",
- "sit",
- "amet",
- "consectetur",
- "adipiscing",
- "elit"];
+lorem("lorem",
+ "ipsum",
+ "dolor",
+ "sit",
+ "amet",
+ "consectetur",
+ "adipiscing",
+ "elit");
```
-## `array_width`
+### Generics
-Maximum width of an array literal before falling back to vertical formatting
+#### `"Block"` (default):
-- **Default value**: `60`
-- **Possible values**: any positive integer
+```rust
+fn lorem<
+ Ipsum: Eq = usize,
+ Dolor: Eq = usize,
+ Sit: Eq = usize,
+ Amet: Eq = usize,
+ Adipiscing: Eq = usize,
+ Consectetur: Eq = usize,
+ Elit: Eq = usize
+>(
+ ipsum: Ipsum,
+ dolor: Dolor,
+ sit: Sit,
+ amet: Amet,
+ adipiscing: Adipiscing,
+ consectetur: Consectetur,
+ elit: Elit,
+) -> T {
+ // body
+}
+```
+
+#### `"Visual"`:
+
+```rust
+fn lorem<Ipsum: Eq = usize,
+ Dolor: Eq = usize,
+ Sit: Eq = usize,
+ Amet: Eq = usize,
+ Adipiscing: Eq = usize,
+ Consectetur: Eq = usize,
+ Elit: Eq = usize>
+ (ipsum: Ipsum,
+ dolor: Dolor,
+ sit: Sit,
+ amet: Amet,
+ adipiscing: Adipiscing,
+ consectetur: Consectetur,
+ elit: Elit)
+ -> T {
+ // body
+}
+```
+
+#### Struct
+
+#### `"Block"` (default):
+
+```rust
+let lorem = Lorem {
+ ipsum: dolor,
+ sit: amet,
+};
+```
+
+#### `"Visual"`:
+
+```rust
+let lorem = Lorem { ipsum: dolor,
+ sit: amet, };
+```
+
+See also: [`struct_lit_single_line`](#struct_lit_single_line), [`indent_style`](#indent_style).
+
+### Where predicates
+
+#### `"Block"` (default):
+
+```rust
+fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
+where
+ Ipsum: Eq,
+ Dolor: Eq,
+ Sit: Eq,
+ Amet: Eq
+{
+ // body
+}
+```
-**Note:** A value of `0` results in [`array_layout`](#array_layout) being applied regardless of a line's width.
+#### `"Visual"`:
-#### Lines shorter than `array_width`:
```rust
-let lorem = vec!["ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit"];
+fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
+ where Ipsum: Eq,
+ Dolor: Eq,
+ Sit: Eq,
+ Amet: Eq
+{
+ // body
+}
```
-#### Lines longer than `array_width`:
-See [`array_layout`](#array_layout).
-## `attributes_on_same_line_as_field`
+## `same_line_attributes`
-Try to put attributes on the same line as fields
+Try to put attributes on the same line as fields and variants
- **Default value**: `true`
- **Possible values**: `true`, `false`
#[serde(rename = "Dolor")] dolor: usize,
#[serde(rename = "Amet")] amet: usize,
}
+
+enum Lorem {
+ #[serde(skip_serializing)] Ipsum,
+ #[serde(skip_serializing)] Dolor,
+ #[serde(skip_serializing)] Amet,
+}
```
#### `false`:
#[serde(rename = "Amet")]
amet: usize,
}
+
+enum Lorem {
+ #[serde(skip_serializing)]
+ Ipsum,
+ #[serde(skip_serializing)]
+ Dolor,
+ #[serde(skip_serializing)]
+ Amet,
+}
```
-## `attributes_on_same_line_as_variant`
+## `use_small_heuristics`
-Try to put attributes on the same line as variants
+Whether to use different formatting for items and expressions if they satisfy a heuristic notion of 'small'.
- **Default value**: `true`
- **Possible values**: `true`, `false`
```rust
enum Lorem {
- #[serde(skip_serializing)] Ipsum,
- #[serde(skip_serializing)] Dolor,
- #[serde(skip_serializing)] Amet,
+ Ipsum,
+ Dolor(bool),
+ Sit { amet: Consectetur, adipiscing: Elit },
+}
+
+fn main() {
+ lorem(
+ "lorem",
+ "ipsum",
+ "dolor",
+ "sit",
+ "amet",
+ "consectetur",
+ "adipiscing",
+ );
+
+ let lorem = Lorem { ipsum: dolor, sit: amet };
+
+ let lorem = if ipsum { dolor } else { sit };
}
```
```rust
enum Lorem {
- #[serde(skip_serializing)]
Ipsum,
- #[serde(skip_serializing)]
- Dolor,
- #[serde(skip_serializing)]
- Amet,
+ Dolor(bool),
+ Sit {
+ amet: Consectetur,
+ adipiscing: Elit,
+ },
+}
+
+fn main() {
+ lorem("lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing");
+
+ let lorem = Lorem {
+ ipsum: dolor,
+ sit: amet,
+ };
+
+ let lorem = if ipsum {
+ dolor
+ } else {
+ sit
+ };
}
```
.elit();
```
-See also [`chain_one_line_max`](#chain_one_line_max).
-## `chain_one_line_max`
-Maximum length of a chain to fit on a single line
-
-- **Default value**: `60`
-- **Possible values**: any positive integer
-
-#### Lines shorter than `chain_one_line_max`:
-```rust
-let lorem = ipsum.dolor().sit().amet().consectetur().adipiscing().elit();
-```
-
-#### Lines longer than `chain_one_line_max`:
-See [`chain_indent`](#chain_indent).
-
-## `chain_split_single_child`
+## `combine_control_expr`
-Split a chain with a single child if its length exceeds [`chain_one_line_max`](#chain_one_line_max).
+Combine control expressions with function calls.
-- **Default value**: `false`
-- **Possible values**: `false`, `true`
+- **Default value**: `true`
+- **Possible values**: `true`, `false`
-#### `false` (default):
+#### `true` (default):
```rust
-let files = fs::read_dir("tests/coverage/source").expect("Couldn't read source dir");
-```
-
-#### `true`:
-
-```rust
-let files = fs::read_dir("tests/coverage/source")
- .expect("Couldn't read source dir");
-```
-
-See also [`chain_one_line_max`](#chain_one_line_max).
-
-## `closure_block_indent_threshold`
-
-How many lines a closure must have before it is block indented. -1 means never use block indent.
-
-- **Default value**: `7`
-- **Possible values**: `-1`, or any positive integer
-
-#### Closures shorter than `closure_block_indent_threshold`:
-```rust
-lorem_ipsum(|| {
- println!("lorem");
- println!("ipsum");
- println!("dolor");
- println!("sit");
- println!("amet");
- });
-```
-
-#### Closures longer than `closure_block_indent_threshold`:
-```rust
-lorem_ipsum(|| {
- println!("lorem");
- println!("ipsum");
- println!("dolor");
- println!("sit");
- println!("amet");
- println!("consectetur");
- println!("adipiscing");
- println!("elit");
-});
-```
-
-**Note**: This option only takes effect when `fn_call_style` is set to `"Visual"`.
-
-## `combine_control_expr`
-
-Combine control expressions with function calls.
-
-- **Default value**: `true`
-- **Possible values**: `true`, `false`
-
-#### `true` (default):
-
-```rust
-fn example() {
- // If
- foo!(if x {
- foo();
- } else {
- bar();
- });
+fn example() {
+ // If
+ foo!(if x {
+ foo();
+ } else {
+ bar();
+ });
// IfLet
foo!(if let Some(..) = x {
#### `false`:
```rust
+fn example() {
+ // If
+ foo!(
+ if x {
+ foo();
+ } else {
+ bar();
+ }
+ );
+
+ // IfLet
+ foo!(
+ if let Some(..) = x {
+ foo();
+ } else {
+ bar();
+ }
+ );
+
+ // While
+ foo!(
+ while x {
+ foo();
+ bar();
+ }
+ );
+
+ // WhileLet
+ foo!(
+ while let Some(..) = x {
+ foo();
+ bar();
+ }
+ );
+
+ // ForLoop
+ foo!(
+ for x in y {
+ foo();
+ bar();
+ }
+ );
+
+ // Loop
+ foo!(
+ loop {
+ foo();
+ bar();
+ }
+ );
+}
```
## `comment_width`
let (lorem, ipsum, ..) = (1, 2, 3, 4);
```
-## `control_style`
-
-Indent style for control flow statements
-
-- **Default value**: `"Rfc"`
-- **Possible values**: `"Rfc"`, `"Legacy"`
-
-#### `"Rfc"` (default):
-
-```rust
-if lorem_ipsum &&
- dolor_sit &&
- amet_consectetur
-{
- // ...
-}
-```
-
-#### `"Legacy"`:
-
-```rust
-if lorem_ipsum &&
- dolor_sit &&
- amet_consectetur {
- // ...
-}
-```
-
-See also: [`control_brace_style`](#control_brace_style).
-
## `control_brace_style`
Brace style for control flow constructs
## `error_on_line_overflow`
-Error if unable to get all lines within max_width
+Error if unable to get all lines within `max_width`
- **Default value**: `true`
- **Possible values**: `true`, `false`
See also [`max_width`](#max_width).
+## `error_on_line_overflow_comments`
+
+Error if unable to get all comment lines within `comment_width`.
+
+- **Default value**: `true`
+- **Possible values**: `true`, `false`
+
+See also [`comment_width`](#comment_width).
+
## `fn_args_density`
Argument density in functions
- **Default value**: `"Tall"`
-- **Possible values**: `"Compressed"`, `"CompressedIfEmpty"`, `"Tall"`, `"Vertical"`
+- **Possible values**: `"Compressed"`, `"Tall"`, `"Vertical"`
#### `"Tall"` (default):
dolor: Dolor,
sit: Sit,
amet: Amet,
- consectetur: onsectetur,
+ consectetur: Consectetur,
adipiscing: Adipiscing,
elit: Elit,
);
dolor: Dolor,
sit: Sit,
amet: Amet,
- consectetur: onsectetur,
+ consectetur: Consectetur,
adipiscing: Adipiscing,
elit: Elit,
) {
}
```
-#### `"CompressedIfEmpty"`:
-
-```rust
-trait Lorem {
- fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet);
-
- fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet) {
- // body
- }
-
- fn lorem(
- ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur,
- adipiscing: Adipiscing, elit: Elit,
- );
-
- fn lorem(
- ipsum: Ipsum,
- dolor: Dolor,
- sit: Sit,
- amet: Amet,
- consectetur: onsectetur,
- adipiscing: Adipiscing,
- elit: Elit,
- ) {
- // body
- }
-}
-```
-
#### `"Vertical"`:
```rust
dolor: Dolor,
sit: Sit,
amet: Amet,
- consectetur: onsectetur,
+ consectetur: Consectetur,
adipiscing: Adipiscing,
elit: Elit);
dolor: Dolor,
sit: Sit,
amet: Amet,
- consectetur: onsectetur,
+ consectetur: Consectetur,
adipiscing: Adipiscing,
elit: Elit) {
// body
}
```
-## `fn_args_layout`
-Layout of function arguments and tuple structs
+## `brace_style`
-- **Default value**: `"Block"`
-- **Possible values**: `"Block"`, `"Visual"`
-
-#### `"Block"` (default):
-
-```rust
-fn lorem() {}
-
-fn lorem(ipsum: usize) {}
-
-fn lorem(
- ipsum: usize,
- dolor: usize,
- sit: usize,
- amet: usize,
- consectetur: usize,
- adipiscing: usize,
- elit: usize,
-) {
- // body
-}
-```
-
-#### `"Visual"`:
-
-```rust
-fn lorem() {}
-
-fn lorem(ipsum: usize) {}
-
-fn lorem(ipsum: usize,
- dolor: usize,
- sit: usize,
- amet: usize,
- consectetur: usize,
- adipiscing: usize,
- elit: usize) {
- // body
-}
-```
-
-## `fn_args_paren_newline`
-
-If function argument parenthesis goes on a newline
-
-- **Default value**: `false`
-- **Possible values**: `true`, `false`
-
-#### `false` (default):
-
-```rust
-fn lorem(
- ipsum: Ipsum,
- dolor: Dolor,
- sit: Sit,
- amet: Amet,
-) -> DolorSitAmetConsecteturAdipiscingElitLoremIpsumDolorSitAmetConsecteturAdipiscingElit {
- // body
-}
-```
-
-#### `true`:
-
-```rust
-fn lorem
- (
- ipsum: Ipsum,
- dolor: Dolor,
- sit: Sit,
- amet: Amet,
-) -> DolorSitAmetConsecteturAdipiscingElitLoremIpsumDolorSitAmetConsecteturAdipiscingElit {
- // body
-}
-```
-
-## `fn_brace_style`
-
-Brace style for functions
+Brace style for items
- **Default value**: `"SameLineWhere"`
- **Possible values**: `"AlwaysNextLine"`, `"PreferSameLine"`, `"SameLineWhere"`
+### Functions
+
#### `"SameLineWhere"` (default):
```rust
}
```
-## `fn_call_style`
-
-Indentation for function calls, etc.
+### Structs and enums
-- **Default value**: `"Block"`
-- **Possible values**: `"Block"`, `"Visual"`
-
-#### `"Block"` (default):
+#### `"SameLineWhere"` (default):
```rust
-lorem(
- "lorem",
- "ipsum",
- "dolor",
- "sit",
- "amet",
- "consectetur",
- "adipiscing",
- "elit",
-);
-```
-
-#### `"Visual"`:
+struct Lorem {
+ ipsum: bool,
+}
-```rust
-lorem("lorem",
- "ipsum",
- "dolor",
- "sit",
- "amet",
- "consectetur",
- "adipiscing",
- "elit");
+struct Dolor<T>
+ where T: Eq
+{
+ sit: T,
+}
```
-## `fn_call_width`
+#### `"AlwaysNextLine"`:
-Maximum width of the args of a function call before falling back to vertical formatting
+```rust
+struct Lorem
+{
+ ipsum: bool,
+}
-- **Default value**: `60`
-- **Possible values**: any positive integer
+struct Dolor<T>
+ where T: Eq
+{
+ sit: T,
+}
+```
-**Note:** A value of `0` results in vertical formatting being applied regardless of a line's width.
+#### `"PreferSameLine"`:
-#### Function call shorter than `fn_call_width`:
```rust
-lorem("lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit");
-```
+struct Lorem {
+ ipsum: bool,
+}
-#### Function call longer than `fn_call_width`:
+struct Dolor<T>
+ where T: Eq {
+ sit: T,
+}
+```
-See [`fn_call_style`](#fn_call_style).
-## `fn_empty_single_line`
+## `empty_item_single_line`
-Put empty-body functions on a single line
+Put empty-body functions and impls on a single line
- **Default value**: `true`
- **Possible values**: `true`, `false`
```rust
fn lorem() {}
+
+impl Lorem {}
```
#### `false`:
```rust
fn lorem() {
}
-```
-
-See also [`control_brace_style`](#control_brace_style).
-
-## `fn_return_indent`
-
-Location of return type in function declaration
-- **Default value**: `"WithArgs"`
-- **Possible values**: `"WithArgs"`, `"WithWhereClause"`
-
-#### `"WithArgs"` (default):
-
-```rust
-fn lorem(ipsum: Ipsum,
- dolor: Dolor,
- sit: Sit,
- amet: Amet,
- consectetur: Consectetur,
- adipiscing: Adipiscing)
- -> Elit
- where Ipsum: Eq
-{
- // body
+impl Lorem {
}
-
```
-#### `"WithWhereClause"`:
-
-```rust
-fn lorem(ipsum: Ipsum,
- dolor: Dolor,
- sit: Sit,
- amet: Amet,
- consectetur: Consectetur,
- adipiscing: Adipiscing)
- -> Elit
- where Ipsum: Eq
-{
- // body
-}
-
-```
+See also [`brace_style`](#brace_style), [`control_brace_style`](#control_brace_style).
-**Note**: This option only takes effect when `fn_call_style` is set to `"Visual"`.
## `fn_single_line`
}
```
-See also [`control_brace_style`](#control_brace_style).
-
-## `force_explicit_abi`
-
-Always print the abi for extern items
-
-- **Default value**: `true`
-- **Possible values**: `true`, `false`
-
-**Note:** Non-"C" ABIs are always printed. If `false` then "C" is removed.
-
-#### `true` (default):
-
-```rust
-extern "C" {
- pub static lorem: c_int;
-}
-```
-
-#### `false`:
-
-```rust
-extern {
- pub static lorem: c_int;
-}
-```
-
-## `force_format_strings`
-
-Always format string literals
-
-- **Default value**: `false`
-- **Possible values**: `true`, `false`
-
-See [`format_strings`](#format_strings).
-
-See also [`max_width`](#max_width).
-
-## `format_strings`
-
-Format string literals where necessary
-
-- **Default value**: `false`
-- **Possible values**: `true`, `false`
-
-#### `false` (default):
-
-```rust
-let lorem = "ipsum dolor sit amet consectetur adipiscing elit lorem ipsum dolor sit";
-```
-
-#### `true`:
-
-```rust
-let lorem =
- "ipsum dolor sit amet consectetur \
- adipiscing elit lorem ipsum dolor sit";
-```
-
-See also [`force_format_strings`](#force_format_strings), [`max_width`](#max_width).
-
-## `generics_indent`
-
-Indentation of generics
-
-- **Default value**: `"Block"`
-- **Possible values**: `"Block"`, `"Visual"`
-
-#### `"Block"` (default):
-
-```rust
-fn lorem<
- Ipsum: Eq = usize,
- Dolor: Eq = usize,
- Sit: Eq = usize,
- Amet: Eq = usize,
- Adipiscing: Eq = usize,
- Consectetur: Eq = usize,
- Elit: Eq = usize
->(
- ipsum: Ipsum,
- dolor: Dolor,
- sit: Sit,
- amet: Amet,
- adipiscing: Adipiscing,
- consectetur: Consectetur,
- elit: Elit,
-) -> T {
- // body
-}
-```
-
-#### `"Visual"`:
-
-```rust
-fn lorem<Ipsum: Eq = usize,
- Dolor: Eq = usize,
- Sit: Eq = usize,
- Amet: Eq = usize,
- Adipiscing: Eq = usize,
- Consectetur: Eq = usize,
- Elit: Eq = usize>
- (ipsum: Ipsum,
- dolor: Dolor,
- sit: Sit,
- amet: Amet,
- adipiscing: Adipiscing,
- consectetur: Consectetur,
- elit: Elit)
- -> T {
- // body
-}
-```
-
-## `hard_tabs`
+See also [`control_brace_style`](#control_brace_style).
-Use tab characters for indentation, spaces for alignment
+## `force_explicit_abi`
-- **Default value**: `false`
+Always print the abi for extern items
+
+- **Default value**: `true`
- **Possible values**: `true`, `false`
-#### `false` (default):
+**Note:** Non-"C" ABIs are always printed. If `false` then "C" is removed.
+
+#### `true` (default):
```rust
-fn lorem() -> usize {
- 42 // spaces before 42
+extern "C" {
+ pub static lorem: c_int;
}
```
-#### `true`:
+#### `false`:
```rust
-fn lorem() -> usize {
- 42 // tabs before 42
+extern {
+ pub static lorem: c_int;
}
```
-See also: [`tab_spaces`](#tab_spaces).
-
-## `impl_empty_single_line`
+## `format_strings`
-Put empty-body implementations on a single line
+Format string literals where necessary
-- **Default value**: `true`
+- **Default value**: `false`
- **Possible values**: `true`, `false`
-#### `true` (default):
+#### `false` (default):
```rust
-impl Lorem {}
+let lorem = "ipsum dolor sit amet consectetur adipiscing elit lorem ipsum dolor sit";
```
-#### `false`:
+#### `true`:
```rust
-impl Lorem {
-}
+let lorem =
+ "ipsum dolor sit amet consectetur \
+ adipiscing elit lorem ipsum dolor sit";
```
-See also [`item_brace_style`](#item_brace_style).
+See also [`max_width`](#max_width).
-## `indent_match_arms`
+## `hard_tabs`
-Indent match arms instead of keeping them at the same indentation level as the match keyword
+Use tab characters for indentation, spaces for alignment
-- **Default value**: `true`
+- **Default value**: `false`
- **Possible values**: `true`, `false`
-#### `true` (default):
+#### `false` (default):
```rust
-match lorem {
- Lorem::Ipsum => (),
- Lorem::Dolor => (),
- Lorem::Sit => (),
- Lorem::Amet => (),
+fn lorem() -> usize {
+ 42 // spaces before 42
}
```
-#### `false`:
+#### `true`:
```rust
-match lorem {
-Lorem::Ipsum => (),
-Lorem::Dolor => (),
-Lorem::Sit => (),
-Lorem::Amet => (),
+fn lorem() -> usize {
+ 42 // tabs before 42
}
```
-See also: [`match_block_trailing_comma`](#match_block_trailing_comma), [`wrap_match_arms`](#wrap_match_arms).
+See also: [`tab_spaces`](#tab_spaces).
+
## `imports_indent`
use foo::{aaa, bbb, ccc, ddd, eee, fff};
```
-#### `"HorizontalVertical"`
+#### `"HorizontalVertical"`:
```rust
use foo::{xxx, yyy, zzz};
fff};
```
-#### `"Vertical"`
+#### `"Vertical"`:
```rust
use foo::{xxx,
fff};
```
-## `item_brace_style`
-
-Brace style for structs and enums
-
-- **Default value**: `"SameLineWhere"`
-- **Possible values**: `"AlwaysNextLine"`, `"PreferSameLine"`, `"SameLineWhere"`
-
-#### `"SameLineWhere"` (default):
-
-```rust
-struct Lorem {
- ipsum: bool,
-}
-
-struct Dolor<T>
- where T: Eq
-{
- sit: T,
-}
-```
-
-#### `"AlwaysNextLine"`:
-
-```rust
-struct Lorem
-{
- ipsum: bool,
-}
-
-struct Dolor<T>
- where T: Eq
-{
- sit: T,
-}
-```
-
-#### `"PreferSameLine"`:
-
-```rust
-struct Lorem {
- ipsum: bool,
-}
-
-struct Dolor<T>
- where T: Eq {
- sit: T,
-}
-```
-
-## `match_arm_forces_newline`
-
-Consistently put match arms (block based or not) in a newline.
-
-- **Default value**: `false`
-- **Possible values**: `true`, `false`
-
-#### `false` (default):
-
-```rust
-match x {
- // a non-empty block
- X0 => {
- f();
- }
- // an empty block
- X1 => {}
- // a non-block
- X2 => println!("ok"),
-}
-```
-
-#### `true`:
-
-```rust
-match x {
- // a non-empty block
- X0 => {
- f();
- }
- // an empty block
- X1 =>
- {}
- // a non-block
- X2 => {
- println!("ok")
- }
-}
-```
-
-See also: [`wrap_match_arms`](#wrap_match_arms).
## `match_block_trailing_comma`
}
```
-See also: [`indent_match_arms`](#indent_match_arms), [`trailing_comma`](#trailing_comma), [`wrap_match_arms`](#wrap_match_arms).
-
-## `match_pattern_separator_break_point`
-
-Put a match sub-patterns' separator (`|`) in front or back.
-
-- **Default value**: `"Back"`
-- **Possible values**: `"Back"`, `"Front"`
-
-#### `"Back"` (default):
-
-```rust
-match m {
- Variant::Tag |
- Variant::Tag2 |
- Variant::Tag3 |
- Variant::Tag4 |
- Variant::Tag5 |
- Variant::Tag6 => {}
-}
-```
-
-#### `Front`:
-
-```rust
-match m {
- Variant::Tag
- | Variant::Tag2
- | Variant::Tag3
- | Variant::Tag4
- | Variant::Tag5
- | Variant::Tag6 => {}
-}
-```
+See also: [`trailing_comma`](#trailing_comma), [`match_arm_blocks`](#match_arm_blocks).
## `max_width`
pub enum Foo {}
```
-## `multiline_closure_forces_block`
+## `force_multiline_blocks`
-Force multiline closure bodies to be wrapped in a block
+Force multiline closure and match arm bodies to be wrapped in a block
- **Default value**: `false`
- **Possible values**: `false`, `true`
None => ...,
Some(value) => ...,
})
+
+match lorem {
+ None => if ipsum {
+ println!("Hello World");
+ },
+ Some(dolor) => ...,
+}
```
#### `true`:
Some(value) => ...,
}
})
-```
-
-## `multiline_match_arm_forces_block`
-
-Force multiline match arm bodies to be wrapped in a block
-
-- **Default value**: `false`
-- **Possible values**: `false`, `true`
-
-#### `false` (default):
-
-```rust
-match lorem {
- None => if ipsum {
- println!("Hello World");
- },
- Some(dolor) => ...,
-}
-```
-
-#### `true`:
-```rust
match lorem {
None => {
if ipsum {
}
```
+
## `newline_style`
Unix or Windows line endings
See also [`reorder_imports`](#reorder_imports).
-## `single_line_if_else_max_width`
+## `reorder_extern_crates`
-Maximum line length for single line if-else expressions.
+Reorder `extern crate` statements alphabetically
-- **Default value**: `50`
-- **Possible values**: any positive integer
+- **Default value**: `true`
+- **Possible values**: `true`, `false`
-**Note:** A value of `0` results in if-else expressions being broken regardless of their line's width.
+#### `true` (default):
-#### Lines shorter than `single_line_if_else_max_width`:
```rust
-let lorem = if ipsum { dolor } else { sit };
+extern crate dolor;
+extern crate ipsum;
+extern crate lorem;
+extern crate sit;
```
-#### Lines longer than `single_line_if_else_max_width`:
+#### `false`:
+
```rust
-let lorem = if ipsum {
- dolor
-} else {
- sit
-};
+extern crate lorem;
+extern crate ipsum;
+extern crate dolor;
+extern crate sit;
```
-See also: [`control_brace_style`](#control_brace_style).
-
-## `skip_children`
-
-Don't reformat out of line modules
-
-- **Default value**: `false`
-- **Possible values**: `true`, `false`
+See also [`reorder_extern_crates_in_group`](#reorder_extern_crates_in_group).
-## `space_after_bound_colon`
+## `reorder_extern_crates_in_group`
-Leave a space after the colon in a trait or lifetime bound
+Reorder `extern crate` statements in group
- **Default value**: `true`
- **Possible values**: `true`, `false`
+**Note:** This option takes effect only when [`reorder_imports`](#reorder_imports) is set to `true`.
+
#### `true` (default):
```rust
-fn lorem<T: Eq>(t: T) {
- // body
-}
+extern crate a;
+extern crate b;
+
+extern crate dolor;
+extern crate ipsum;
+extern crate lorem;
+extern crate sit;
```
#### `false`:
```rust
-fn lorem<T:Eq>(t: T) {
- // body
-}
-```
+extern crate b;
+extern crate a;
-See also: [`space_before_bound`](#space_before_bound).
+extern crate lorem;
+extern crate ipsum;
+extern crate dolor;
+extern crate sit;
+```
-## `struct_field_align_threshold`
+See also [`reorder_extern_crates`](#reorder_extern_crates).
-The maximum diff of width between struct fields to be aligned with each other.
+## `report_todo`
-- **Default value** : 0
-- **Possible values**: any positive integer
+Report `TODO` items in comments.
-#### `0` (default):
+- **Default value**: `"Never"`
+- **Possible values**: `"Always"`, `"Unnumbered"`, `"Never"`
-```rust
-struct Foo {
- x: u32,
- yy: u32,
- zzz: u32,
-}
-```
+Warns about any comments containing `TODO` in them when set to `"Always"`. If
+it contains a `#X` (with `X` being a number) in parentheses following the
+`TODO`, `"Unnumbered"` will ignore it.
-#### `20`:
+See also [`report_fixme`](#report_fixme).
-```rust
-struct Foo {
- x: u32,
- yy: u32,
- zzz: u32,
-}
-```
+## `report_fixme`
-## `space_after_struct_lit_field_colon`
+Report `FIXME` items in comments.
-Leave a space after the colon in a struct literal field
+- **Default value**: `"Never"`
+- **Possible values**: `"Always"`, `"Unnumbered"`, `"Never"`
-- **Default value**: `true`
-- **Possible values**: `true`, `false`
+Warns about any comments containing `FIXME` in them when set to `"Always"`. If
+it contains a `#X` (with `X` being a number) in parentheses following the
+`FIXME`, `"Unnumbered"` will ignore it.
-#### `true` (default):
+See also [`report_todo`](#report_todo).
-```rust
-let lorem = Lorem {
- ipsum: dolor,
- sit: amet,
-};
-```
-#### `false`:
+## `skip_children`
-```rust
-let lorem = Lorem {
- ipsum:dolor,
- sit:amet,
-};
-```
+Don't reformat out of line modules
-See also: [`space_before_struct_lit_field_colon`](#space_before_struct_lit_field_colon).
+- **Default value**: `false`
+- **Possible values**: `true`, `false`
-## `space_after_type_annotation_colon`
+## `space_after_colon`
-Leave a space after the colon in a type annotation
+Leave a space after the colon.
- **Default value**: `true`
- **Possible values**: `true`, `false`
```rust
fn lorem<T: Eq>(t: T) {
- let ipsum: Dolor = sit;
+ let lorem: Dolor = Lorem {
+ ipsum: dolor,
+ sit: amet,
+ };
}
```
#### `false`:
```rust
-fn lorem<T: Eq>(t:T) {
- let ipsum:Dolor = sit;
-}
-```
-
-See also: [`space_before_type_annotation`](#space_before_type_annotation).
-
-## `space_before_bound`
-
-Leave a space before the colon in a trait or lifetime bound
-
-- **Default value**: `false`
-- **Possible values**: `true`, `false`
-
-#### `false` (default):
-
-```rust
-fn lorem<T: Eq>(t: T) {
- let ipsum: Dolor = sit;
-}
-```
-
-#### `true`:
-
-```rust
-fn lorem<T : Eq>(t: T) {
- let ipsum: Dolor = sit;
+fn lorem<T:Eq>(t:T) {
+ let lorem:Dolor = Lorem {
+ ipsum:dolor,
+ sit:amet,
+ };
}
```
-See also: [`space_after_bound_colon`](#space_after_bound_colon).
+See also: [`space_before_colon`](#space_before_colon).
-## `space_before_struct_lit_field_colon`
+## `space_before_colon`
-Leave a space before the colon in a struct literal field
+Leave a space before the colon.
- **Default value**: `false`
- **Possible values**: `true`, `false`
-#### `false` (default):
-
-```rust
-let lorem = Lorem {
- ipsum: dolor,
- sit: amet,
-};
+#### `false` (default):
+
+```rust
+fn lorem<T: Eq>(t: T) {
+ let lorem: Dolor = Lorem {
+ ipsum: dolor,
+ sit: amet,
+ };
+}
```
#### `true`:
```rust
-let lorem = Lorem {
- ipsum : dolor,
- sit : amet,
-};
+fn lorem<T : Eq>(t : T) {
+ let lorem : Dolor = Lorem {
+ ipsum : dolor,
+ sit : amet,
+ };
+}
```
-See also: [`space_after_struct_lit_field_colon`](#space_after_struct_lit_field_colon).
+See also: [`space_after_colon`](#space_after_colon).
-## `space_before_type_annotation`
+## `struct_field_align_threshold`
-Leave a space before the colon in a type annotation
+The maximum diff of width between struct fields to be aligned with each other.
-- **Default value**: `false`
-- **Possible values**: `true`, `false`
+- **Default value** : 0
+- **Possible values**: any positive integer
-#### `false` (default):
+#### `0` (default):
```rust
-fn lorem<T: Eq>(t: T) {
- let ipsum: Dolor = sit;
+struct Foo {
+ x: u32,
+ yy: u32,
+ zzz: u32,
}
```
-#### `true`:
+#### `20`:
```rust
-fn lorem<T: Eq>(t : T) {
- let ipsum : Dolor = sit;
+struct Foo {
+ x: u32,
+ yy: u32,
+ zzz: u32,
}
```
-See also: [`space_after_type_annotation_colon`](#space_after_type_annotation_colon).
+```
## `spaces_around_ranges`
let lorem = 0 .. 10;
```
-## `spaces_within_angle_brackets`
+## `spaces_within_parens_and_brackets`
Put spaces within non-empty generic arguments
}
```
-See also: [`spaces_within_parens`](#spaces_within_parens), [`spaces_within_square_brackets`](#spaces_within_square_brackets).
+See also: [`spaces_within_parens_and_brackets`](#spaces_within_parens_and_brackets), [`spaces_within_parens_and_brackets`](#spaces_within_parens_and_brackets).
-## `spaces_within_parens`
+## `spaces_within_parens_and_brackets`
Put spaces within non-empty parentheses
}
```
-See also: [`spaces_within_angle_brackets`](#spaces_within_angle_brackets), [`spaces_within_square_brackets`](#spaces_within_square_brackets).
+See also: [`spaces_within_parens_and_brackets`](#spaces_within_parens_and_brackets), [`spaces_within_parens_and_brackets`](#spaces_within_parens_and_brackets).
-## `spaces_within_square_brackets`
+## `spaces_within_parens_and_brackets`
Put spaces within non-empty square brackets
let lorem: [ usize; 2 ] = [ ipsum, dolor ];
```
-See also: [`spaces_within_parens`](#spaces_within_parens), [`spaces_within_angle_brackets`](#spaces_within_angle_brackets).
+See also: [`spaces_within_parens_and_brackets`](#spaces_within_parens_and_brackets), [`spaces_within_parens_and_brackets`](#spaces_within_parens_and_brackets).
-## `struct_lit_multiline_style`
+## `struct_lit_single_line`
-Multiline style on literal structs
+Put small struct literals on a single line
-- **Default value**: `"PreferSingle"`
-- **Possible values**: `"ForceMulti"`, `"PreferSingle"`
+- **Default value**: `true`
+- **Possible values**: `true`, `false`
-#### `"PreferSingle"` (default):
+#### `true` (default):
```rust
let lorem = Lorem { ipsum: dolor, sit: amet };
```
-#### `"ForceMulti"`:
-
-```rust
-let lorem = Lorem {
- ipsum: dolor,
- sit: amet,
-};
-```
-
-See also: [`struct_lit_style`](#struct_lit_style), [`struct_lit_width`](#struct_lit_width).
-
-## `struct_lit_style`
-
-Style of struct definition
-
-- **Default value**: `"Block"`
-- **Possible values**: `"Block"`, `"Visual"`
-
-#### `"Block"` (default):
+#### `false`:
```rust
let lorem = Lorem {
};
```
-#### `"Visual"`:
-
-```rust
-let lorem = Lorem { ipsum: dolor,
- sit: amet, };
-```
-
-See also: [`struct_lit_multiline_style`](#struct_lit_multiline_style), [`struct_lit_style`](#struct_lit_style).
-
-## `struct_lit_width`
-
-Maximum width in the body of a struct lit before falling back to vertical formatting
-
-- **Default value**: `18`
-- **Possible values**: any positive integer
-
-**Note:** A value of `0` results in vertical formatting being applied regardless of a line's width.
-
-#### Lines shorter than `struct_lit_width`:
-```rust
-let lorem = Lorem { ipsum: dolor, sit: amet };
-```
-
-#### Lines longer than `struct_lit_width`:
-See [`struct_lit_style`](#struct_lit_style).
+See also: [`indent_style`](#indent_style).
-See also: [`struct_lit_multiline_style`](#struct_lit_multiline_style), [`struct_lit_style`](#struct_lit_style).
-
-## `struct_variant_width`
-
-Maximum width in the body of a struct variant before falling back to vertical formatting
-
-- **Default value**: `35`
-- **Possible values**: any positive integer
-
-**Note:** A value of `0` results in vertical formatting being applied regardless of a line's width.
-
-#### Struct variants shorter than `struct_variant_width`:
-```rust
-enum Lorem {
- Ipsum,
- Dolor(bool),
- Sit { amet: Consectetur, adipiscing: Elit },
-}
-```
-
-#### Struct variants longer than `struct_variant_width`:
-```rust
-enum Lorem {
- Ipsum,
- Dolor(bool),
- Sit {
- amet: Consectetur,
- adipiscing: Elit,
- },
-}
-```
## `tab_spaces`
See also: [`hard_tabs`](#hard_tabs).
-## `take_source_hints`
-
-Retain some formatting characteristics from the source code
-
-- **Default value**: `false`
-- **Possible values**: `true`, `false`
-
-#### `false` (default):
-
-```rust
-lorem
- .ipsum()
- .dolor(|| { sit.amet().consectetur().adipiscing().elit(); });
-```
-
-#### `true`:
-
-```rust
-lorem
- .ipsum()
- .dolor(|| {
- sit.amet()
- .consectetur()
- .adipiscing()
- .elit();
- });
-```
-
-Note: This only applies if the call chain within the inner closure had already been formatted on separate lines before running rustfmt.
## `trailing_comma`
let lorem = ipsum.map(|dolor| dolor.sit())?;
```
-## `where_density`
-
-Density of a where clause.
-
-- **Default value**: `"CompressedIfEmpty"`
-- **Possible values**: `"Compressed"`, `"CompressedIfEmpty"`, `"Tall"`, `"Vertical"`
-
-#### `"CompressedIfEmpty"` (default):
-
-```rust
-trait Lorem {
- fn ipsum<Dolor>(dolor: Dolor) -> Sit
- where Dolor: Eq;
-
- fn ipsum<Dolor>(dolor: Dolor) -> Sit
- where
- Dolor: Eq,
- {
- // body
- }
-}
-```
-
-#### `"Compressed"`:
-
-```rust
-trait Lorem {
- fn ipsum<Dolor>(dolor: Dolor) -> Sit
- where Dolor: Eq;
-
- fn ipsum<Dolor>(dolor: Dolor) -> Sit
- where Dolor: Eq {
- // body
- }
-}
-```
-
-#### `"Tall"`:
-
-```rust
-trait Lorem {
- fn ipsum<Dolor>(dolor: Dolor) -> Sit
- where
- Dolor: Eq;
-
- fn ipsum<Dolor>(dolor: Dolor) -> Sit
- where
- Dolor: Eq,
- {
- // body
- }
-}
-```
-
-**Note:** `where_density = "Tall"` currently produces the same output as `where_density = "Vertical"`.
-
-#### `"Vertical"`:
-
-```rust
-trait Lorem {
- fn ipsum<Dolor>(dolor: Dolor) -> Sit
- where Dolor: Eq;
-
- fn ipsum<Dolor>(dolor: Dolor) -> Sit
- where Dolor: Eq
- {
- // body
- }
-}
-```
-
-**Note:** `where_density = "Vertical"` currently produces the same output as `where_density = "Tall"`.
-
-See also: [`where_layout`](#where_layout), [`where_pred_indent`](#where_pred_indent), [`where_style`](#where_style).
-
-## `where_layout`
-
-Element layout inside a where clause
-
-- **Default value**: `"Vertical"`
-- **Possible values**: `"Horizontal"`, `"HorizontalVertical"`, `"Mixed"`, `"Vertical"`
-
-#### `"Vertical"` (default):
-
-```rust
-fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
- where Ipsum: IpsumDolorSitAmet,
- Dolor: DolorSitAmetConsectetur
-{
- // body
-}
-
-fn lorem<Ipsum, Dolor, Sit, Amet>(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet)
- where Ipsum: IpsumDolorSitAmet,
- Dolor: DolorSitAmetConsectetur,
- Sit: SitAmetConsecteturAdipiscing,
- Amet: AmetConsecteturAdipiscingElit
-{
- // body
-}
-```
-
-#### `"Horizontal"`:
-
-```rust
-fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
- where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur
-{
- // body
-}
-
-fn lorem<Ipsum, Dolor, Sit, Amet>(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet)
- where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur, Sit: SitAmetConsecteturAdipiscing, Amet: AmetConsecteturAdipiscingElit
-{
- // body
-}
-```
-
-#### `"HorizontalVertical"`:
-
-```rust
-fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
- where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur
-{
- // body
-}
-
-fn lorem<Ipsum, Dolor, Sit, Amet>(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet)
- where Ipsum: IpsumDolorSitAmet,
- Dolor: DolorSitAmetConsectetur,
- Sit: SitAmetConsecteturAdipiscing,
- Amet: AmetConsecteturAdipiscingElit
-{
- // body
-}
-```
-
-#### `"Mixed"`:
-
-```rust
-fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
- where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur
-{
- // body
-}
-
-fn lorem<Ipsum, Dolor, Sit, Amet>(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet)
- where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur,
- Sit: SitAmetConsecteturAdipiscing, Amet: AmetConsecteturAdipiscingElit
-{
- // body
-}
-```
-
-**Note**: This option only takes effect when `where_style` is set to `"Legacy"`.
-
-See also: [`where_density`](#where_density), [`where_pred_indent`](#where_pred_indent), [`where_style`](#where_style).
-
-## `where_pred_indent`
-
-Indentation style of a where predicate
-
-- **Default value**: `"Visual"`
-- **Possible values**: `"Block"`, `"Visual"`
-
-#### `"Visual"` (default):
-
-```rust
-fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
- where Ipsum: Eq,
- Dolor: Eq,
- Sit: Eq,
- Amet: Eq
-{
- // body
-}
-```
-
-#### `"Block"`:
-
-```rust
-fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
- where Ipsum: Eq,
- Dolor: Eq,
- Sit: Eq,
- Amet: Eq
-{
- // body
-}
-```
-
-**Note**: This option only takes effect when `where_style` is set to `"Legacy"`.
-
-See also: [`where_density`](#where_density), [`where_layout`](#where_layout), [`where_style`](#where_style).
-
-## `where_style`
-
-Overall strategy for where clauses
-
-- **Default value**: `"Rfc"`
-- **Possible values**: `"Rfc"`, `"Legacy"`
-
-#### `"Rfc"` (default):
-
-```rust
-fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
-where
- Ipsum: Eq,
- Dolor: Eq,
- Sit: Eq,
- Amet: Eq,
-{
- // body
-}
-```
-
-#### `"Legacy"`:
-
-```rust
-fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
- where Ipsum: Eq,
- Dolor: Eq,
- Sit: Eq,
- Amet: Eq
-{
- // body
-}
-```
-
-See also: [`where_density`](#where_density), [`where_layout`](#where_layout), [`where_pred_indent`](#where_pred_indent).
## `wrap_comments`
// commodo consequat.
```
-## `wrap_match_arms`
+## `match_arm_blocks`
Wrap the body of arms in blocks when it does not fit on the same line with the pattern of arms
}
```
-See also: [`indent_match_arms`](#indent_match_arms), [`match_block_trailing_comma`](#match_block_trailing_comma).
+See also: [`match_block_trailing_comma`](#match_block_trailing_comma).
## `write_mode`