]> git.lizzy.rs Git - rust.git/blobdiff - Configurations.md
Use push_str() instead of write!()
[rust.git] / Configurations.md
index 5de757a91685998ab6d0fff1c6ee1311308cdb8f..16849d11880a5f1c768264e9376607ecf7558bb2 100644 (file)
@@ -14,6 +14,42 @@ 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.
+
+- **Default value**: `0`
+- **Possible values**: any positive integer
+
+**Note:** A value of `0` results in [`array_layout`](#array_layout) being applied regardless of a line's width.
+
+#### `0` (default):
+
+```rust
+// Each element will be placed on its own line.
+let a = vec![
+    0,
+    1,
+    2,
+    3,
+    4,
+    ...
+    999,
+    1000,
+];
+```
+
+#### `1000`:
+
+```rust
+// Each element will be placed on the same line as much as possible.
+let a = vec![
+    0, 1, 2, 3, 4, ...
+    ..., 999, 1000,
+];
+```
+
 ## `array_layout`
 
 Indent on arrays
@@ -21,7 +57,7 @@ Indent on arrays
 - **Default value**: `"Block"`
 - **Possible values**: `"Block"`, `"Visual"`
 
-#### `"Block"`:
+#### `"Block"` (default):
 
 ```rust
 let lorem = vec![
@@ -58,13 +94,109 @@ Maximum width of an array literal before falling back to vertical formatting
 
 #### Lines shorter than `array_width`:
 ```rust
-let lorem =
-    vec!["ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit"];
+let lorem = vec!["ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit"];
 ```
 
 #### Lines longer than `array_width`:
 See [`array_layout`](#array_layout).
 
+## `attributes_on_same_line_as_field`
+
+Try to put attributes on the same line as fields
+
+- **Default value**: `true`
+- **Possible values**: `true`, `false`
+
+#### `true` (default):
+
+```rust
+struct Lorem {
+    #[serde(rename = "Ipsum")] ipsum: usize,
+    #[serde(rename = "Dolor")] dolor: usize,
+    #[serde(rename = "Amet")] amet: usize,
+}
+```
+
+#### `false`:
+
+```rust
+struct Lorem {
+    #[serde(rename = "Ipsum")]
+    ipsum: usize,
+    #[serde(rename = "Dolor")]
+    dolor: usize,
+    #[serde(rename = "Amet")]
+    amet: usize,
+}
+```
+
+## `attributes_on_same_line_as_variant`
+
+Try to put attributes on the same line as variants
+
+- **Default value**: `true`
+- **Possible values**: `true`, `false`
+
+#### `true` (default):
+
+```rust
+enum Lorem {
+    #[serde(skip_serializing)] Ipsum,
+    #[serde(skip_serializing)] Dolor,
+    #[serde(skip_serializing)] Amet,
+}
+```
+
+#### `false`:
+
+```rust
+enum Lorem {
+    #[serde(skip_serializing)]
+    Ipsum,
+    #[serde(skip_serializing)]
+    Dolor,
+    #[serde(skip_serializing)]
+    Amet,
+}
+```
+
+## `binop_separator`
+
+Where to put a binary operator when a binary expression goes multiline.
+
+- **Default value**: `"Front"`
+- **Possible values**: `"Front"`, `"Back"`
+
+#### `"Front"` (default):
+
+```rust
+let or = foo
+    || bar
+    || foobar;
+
+let sum = 1234
+    + 5678
+    + 910;
+
+let range = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+    ..bbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
+```
+
+#### `"Back"`:
+
+```rust
+let or = foo ||
+    bar ||
+    foobar;
+
+let sum = 1234 +
+    5678 +
+    910;
+
+let range = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..
+    bbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
+```
+
 ## `chain_indent`
 
 Indentation of chain
@@ -72,7 +204,7 @@ Indentation of chain
 - **Default value**: `"Block"`
 - **Possible values**: `"Block"`, `"Visual"`
 
-#### `"Block"`:
+#### `"Block"` (default):
 
 ```rust
 let lorem = ipsum
@@ -119,13 +251,13 @@ Split a chain with a single child if its length exceeds [`chain_one_line_max`](#
 - **Default value**: `false`
 - **Possible values**: `false`, `true`
 
-#### `false`
+#### `false` (default):
 
 ```rust
 let files = fs::read_dir("tests/coverage/source").expect("Couldn't read source dir");
 ```
 
-#### `true`
+#### `true`:
 
 ```rust
 let files = fs::read_dir("tests/coverage/source")
@@ -166,6 +298,8 @@ lorem_ipsum(|| {
 });
 ```
 
+**Note**: This option only takes effect when `fn_call_style` is set to `"Visual"`.
+
 ## `combine_control_expr`
 
 Combine control expressions with function calls.
@@ -173,7 +307,7 @@ Combine control expressions with function calls.
 - **Default value**: `true`
 - **Possible values**: `true`, `false`
 
-#### `true`
+#### `true` (default):
 
 ```rust
 fn example() {
@@ -217,7 +351,7 @@ fn example() {
 }
 ```
 
-#### `false`
+#### `false`:
 
 ```rust
 ```
@@ -251,7 +385,7 @@ Replace strings of _ wildcards by a single .. in tuple patterns
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 let (lorem, ipsum, _, _) = (1, 2, 3, 4);
@@ -270,7 +404,7 @@ Indent style for control flow statements
 - **Default value**: `"Rfc"`
 - **Possible values**: `"Rfc"`, `"Legacy"`
 
-#### `"Rfc"`:
+#### `"Rfc"` (default):
 
 ```rust
 if lorem_ipsum &&
@@ -300,25 +434,25 @@ Brace style for control flow constructs
 - **Default value**: `"AlwaysSameLine"`
 - **Possible values**: `"AlwaysNextLine"`, `"AlwaysSameLine"`, `"ClosingNextLine"`
 
-#### `"AlwaysNextLine"`:
+#### `"AlwaysSameLine"` (default):
 
 ```rust
-if lorem
-{
+if lorem {
     println!("ipsum!");
-}
-else
-{
+} else {
     println!("dolor!");
 }
 ```
 
-#### `"AlwaysSameLine"`:
+#### `"AlwaysNextLine"`:
 
 ```rust
-if lorem {
+if lorem
+{
     println!("ipsum!");
-} else {
+}
+else
+{
     println!("dolor!");
 }
 ```
@@ -357,7 +491,7 @@ Argument density in functions
 - **Default value**: `"Tall"`
 - **Possible values**: `"Compressed"`, `"CompressedIfEmpty"`, `"Tall"`, `"Vertical"`
 
-#### `"Compressed"`:
+#### `"Tall"` (default):
 
 ```rust
 trait Lorem {
@@ -367,17 +501,31 @@ trait Lorem {
         // 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: Consectetur,
-             adipiscing: Adipiscing, elit: Elit) {
+    fn lorem(
+        ipsum: Ipsum,
+        dolor: Dolor,
+        sit: Sit,
+        amet: Amet,
+        consectetur: onsectetur,
+        adipiscing: Adipiscing,
+        elit: Elit,
+    );
+
+    fn lorem(
+        ipsum: Ipsum,
+        dolor: Dolor,
+        sit: Sit,
+        amet: Amet,
+        consectetur: onsectetur,
+        adipiscing: Adipiscing,
+        elit: Elit,
+    ) {
         // body
     }
 }
 ```
 
-#### `"CompressedIfEmpty"`:
+#### `"Compressed"`:
 
 ```rust
 trait Lorem {
@@ -387,22 +535,21 @@ trait Lorem {
         // 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: Consectetur,
+        adipiscing: Adipiscing, elit: Elit,
+    );
 
-    fn lorem(ipsum: Ipsum,
-             dolor: Dolor,
-             sit: Sit,
-             amet: Amet,
-             consectetur: onsectetur,
-             adipiscing: Adipiscing,
-             elit: Elit) {
+    fn lorem(
+        ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur,
+        adipiscing: Adipiscing, elit: Elit,
+    ) {
         // body
     }
 }
 ```
 
-#### `"Tall"`:
+#### `"CompressedIfEmpty"`:
 
 ```rust
 trait Lorem {
@@ -412,21 +559,20 @@ trait Lorem {
         // body
     }
 
-    fn lorem(ipsum: Ipsum,
-             dolor: Dolor,
-             sit: Sit,
-             amet: Amet,
-             consectetur: onsectetur,
-             adipiscing: Adipiscing,
-             elit: Elit);
-
-    fn lorem(ipsum: Ipsum,
-             dolor: Dolor,
-             sit: Sit,
-             amet: Amet,
-             consectetur: onsectetur,
-             adipiscing: Adipiscing,
-             elit: Elit) {
+    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
     }
 }
@@ -475,7 +621,7 @@ Layout of function arguments and tuple structs
 - **Default value**: `"Block"`
 - **Possible values**: `"Block"`, `"Visual"`
 
-#### `"Block"`:
+#### `"Block"` (default):
 
 ```rust
 fn lorem() {}
@@ -520,15 +666,15 @@ If function argument parenthesis goes on a newline
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 fn lorem(
     ipsum: Ipsum,
     dolor: Dolor,
     sit: Sit,
-    amet: Amet)
-    -> DolorSitAmetConsecteturAdipiscingElitLoremIpsumDolorSitAmetConsecteturAdipiscingElit {
+    amet: Amet,
+) -> DolorSitAmetConsecteturAdipiscingElitLoremIpsumDolorSitAmetConsecteturAdipiscingElit {
     // body
 }
 ```
@@ -537,11 +683,12 @@ fn lorem(
 
 ```rust
 fn lorem
-    (ipsum: Ipsum,
-     dolor: Dolor,
-     sit: Sit,
-     amet: Amet)
-     -> DolorSitAmetConsecteturAdipiscingElitLoremIpsumDolorSitAmetConsecteturAdipiscingElit {
+    (
+    ipsum: Ipsum,
+    dolor: Dolor,
+    sit: Sit,
+    amet: Amet,
+) -> DolorSitAmetConsecteturAdipiscingElitLoremIpsumDolorSitAmetConsecteturAdipiscingElit {
     // body
 }
 ```
@@ -553,44 +700,47 @@ Brace style for functions
 - **Default value**: `"SameLineWhere"`
 - **Possible values**: `"AlwaysNextLine"`, `"PreferSameLine"`, `"SameLineWhere"`
 
-#### `"AlwaysNextLine"`:
+#### `"SameLineWhere"` (default):
 
 ```rust
-fn lorem()
-{
+fn lorem() {
     // body
 }
 
-fn lorem(ipsum: usize)
-{
+fn lorem(ipsum: usize) {
     // body
 }
 
 fn lorem<T>(ipsum: T)
-    where T: Add + Sub + Mul + Div
+where
+    T: Add + Sub + Mul + Div,
 {
     // body
 }
 ```
 
-#### `"PreferSameLine"`:
+#### `"AlwaysNextLine"`:
 
 ```rust
-fn lorem() {
+fn lorem()
+{
     // body
 }
 
-fn lorem(ipsum: usize) {
+fn lorem(ipsum: usize)
+{
     // body
 }
 
 fn lorem<T>(ipsum: T)
-    where T: Add + Sub + Mul + Div {
+where
+    T: Add + Sub + Mul + Div,
+{
     // body
 }
 ```
 
-#### `"SameLineWhere"`:
+#### `"PreferSameLine"`:
 
 ```rust
 fn lorem() {
@@ -602,8 +752,8 @@ fn lorem(ipsum: usize) {
 }
 
 fn lorem<T>(ipsum: T)
-    where T: Add + Sub + Mul + Div
-{
+where
+    T: Add + Sub + Mul + Div, {
     // body
 }
 ```
@@ -615,7 +765,7 @@ Indentation for function calls, etc.
 - **Default value**: `"Block"`
 - **Possible values**: `"Block"`, `"Visual"`
 
-#### `"Block"`:
+#### `"Block"` (default):
 
 ```rust
 lorem(
@@ -668,17 +818,17 @@ Put empty-body functions on a single line
 - **Default value**: `true`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `true` (default):
 
 ```rust
-fn lorem() {
-}
+fn lorem() {}
 ```
 
-#### `true`:
+#### `false`:
 
 ```rust
-fn lorem() {}
+fn lorem() {
+}
 ```
 
 See also [`control_brace_style`](#control_brace_style).
@@ -690,7 +840,7 @@ Location of return type in function declaration
 - **Default value**: `"WithArgs"`
 - **Possible values**: `"WithArgs"`, `"WithWhereClause"`
 
-#### `"WithArgs"`:
+#### `"WithArgs"` (default):
 
 ```rust
 fn lorem(ipsum: Ipsum,
@@ -724,6 +874,8 @@ fn lorem(ipsum: Ipsum,
 
 ```
 
+**Note**: This option only takes effect when `fn_call_style` is set to `"Visual"`.
+
 ## `fn_single_line`
 
 Put single-expression functions on a single line
@@ -731,7 +883,7 @@ Put single-expression functions on a single line
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 fn lorem() -> usize {
@@ -766,18 +918,18 @@ Always print the abi for extern items
 
 **Note:** Non-"C" ABIs are always printed. If `false` then "C" is removed.
 
-#### `false`:
+#### `true` (default):
 
 ```rust
-extern {
+extern "C" {
     pub static lorem: c_int;
 }
 ```
 
-#### `true`:
+#### `false`:
 
 ```rust
-extern "C" {
+extern {
     pub static lorem: c_int;
 }
 ```
@@ -800,7 +952,7 @@ Format string literals where necessary
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 let lorem = "ipsum dolor sit amet consectetur adipiscing elit lorem ipsum dolor sit";
@@ -823,7 +975,7 @@ Indentation of generics
 - **Default value**: `"Block"`
 - **Possible values**: `"Block"`, `"Visual"`
 
-#### `"Block"`:
+#### `"Block"` (default):
 
 ```rust
 fn lorem<
@@ -834,14 +986,15 @@ fn lorem<
     Adipiscing: Eq = usize,
     Consectetur: Eq = usize,
     Elit: Eq = usize
->(ipsum: Ipsum,
+>(
+    ipsum: Ipsum,
     dolor: Dolor,
     sit: Sit,
     amet: Amet,
     adipiscing: Adipiscing,
     consectetur: Consectetur,
-    elit: Elit)
-    -> T {
+    elit: Elit,
+) -> T {
     // body
 }
 ```
@@ -875,7 +1028,7 @@ Use tab characters for indentation, spaces for alignment
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 fn lorem() -> usize {
@@ -900,17 +1053,17 @@ Put empty-body implementations on a single line
 - **Default value**: `true`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `true` (default):
 
 ```rust
-impl Lorem {
-}
+impl Lorem {}
 ```
 
-#### `true`:
+#### `false`:
 
 ```rust
-impl Lorem {}
+impl Lorem {
+}
 ```
 
 See also [`item_brace_style`](#item_brace_style).
@@ -922,6 +1075,17 @@ Indent match arms instead of keeping them at the same indentation level as the m
 - **Default value**: `true`
 - **Possible values**: `true`, `false`
 
+#### `true` (default):
+
+```rust
+match lorem {
+    Lorem::Ipsum => (),
+    Lorem::Dolor => (),
+    Lorem::Sit => (),
+    Lorem::Amet => (),
+}
+```
+
 #### `false`:
 
 ```rust
@@ -933,18 +1097,88 @@ Lorem::Amet => (),
 }
 ```
 
-#### `true`:
+See also: [`match_block_trailing_comma`](#match_block_trailing_comma), [`wrap_match_arms`](#wrap_match_arms).
+
+## `imports_indent`
+
+Indent style of imports
+
+- **Default Value**: `"Visual"`
+- **Possible values**: `"Block"`, `"Visual"`
+
+#### `"Visual"` (default):
 
 ```rust
-match lorem {
-    Lorem::Ipsum => (),
-    Lorem::Dolor => (),
-    Lorem::Sit => (),
-    Lorem::Amet => (),
-}
+use foo::{xxx,
+          yyy,
+          zzz};
 ```
 
-See also: [`match_block_trailing_comma`](#match_block_trailing_comma), [`wrap_match_arms`](#wrap_match_arms).
+#### `"Block"`:
+
+```rust
+use foo::{
+    xxx,
+    yyy,
+    zzz,
+};
+```
+
+See also: [`imports_layout`](#imports_layout).
+
+## `imports_layout`
+
+Item layout inside a imports block
+
+- **Default value**: "Mixed"
+- **Possible values**: "Horizontal", "HorizontalVertical", "Mixed", "Vertical"
+
+#### `"Mixed"` (default):
+
+```rust
+use foo::{xxx, yyy, zzz};
+
+use foo::{aaa, bbb, ccc,
+          ddd, eee, fff};
+```
+
+#### `"Horizontal"`:
+
+**Note**: This option forces to put everything on one line and may exceeds `max_width`.
+
+```rust
+use foo::{xxx, yyy, zzz};
+
+use foo::{aaa, bbb, ccc, ddd, eee, fff};
+```
+
+#### `"HorizontalVertical"`
+
+```rust
+use foo::{xxx, yyy, zzz};
+
+use foo::{aaa,
+          bbb,
+          ccc,
+          ddd,
+          eee,
+          fff};
+```
+
+#### `"Vertical"`
+
+```rust
+use foo::{xxx,
+          yyy,
+          zzz};
+
+use foo::{aaa,
+          bbb,
+          ccc,
+          ddd,
+          eee,
+          fff};
+```
 
 ## `item_brace_style`
 
@@ -953,11 +1187,10 @@ Brace style for structs and enums
 - **Default value**: `"SameLineWhere"`
 - **Possible values**: `"AlwaysNextLine"`, `"PreferSameLine"`, `"SameLineWhere"`
 
-#### `"AlwaysNextLine"`:
+#### `"SameLineWhere"` (default):
 
 ```rust
-struct Lorem
-{
+struct Lorem {
     ipsum: bool,
 }
 
@@ -968,20 +1201,22 @@ struct Dolor<T>
 }
 ```
 
-#### `"PreferSameLine"`:
+#### `"AlwaysNextLine"`:
 
 ```rust
-struct Lorem {
+struct Lorem
+{
     ipsum: bool,
 }
 
 struct Dolor<T>
-    where T: Eq {
+    where T: Eq
+{
     sit: T,
 }
 ```
 
-#### `"SameLineWhere"`:
+#### `"PreferSameLine"`:
 
 ```rust
 struct Lorem {
@@ -989,8 +1224,7 @@ struct Lorem {
 }
 
 struct Dolor<T>
-    where T: Eq
-{
+    where T: Eq {
     sit: T,
 }
 ```
@@ -1002,7 +1236,7 @@ Put a trailing comma after a block based match arm (non-block arms are not affec
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 match lorem {
@@ -1026,6 +1260,39 @@ match lorem {
 
 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 => {}
+}
+```
+
 ## `max_width`
 
 Maximum width of each line
@@ -1035,6 +1302,88 @@ Maximum width of each line
 
 See also [`error_on_line_overflow`](#error_on_line_overflow).
 
+## `merge_derives`
+
+Merge multiple derives into a single one.
+
+- **Default value**: `true`
+- **Possible values**: `true`, `false`
+
+#### `true` (default):
+
+```rust
+#[derive(Eq, PartialEq, Debug, Copy, Clone)]
+pub enum Foo {}
+```
+
+#### `false`:
+
+```rust
+#[derive(Eq, PartialEq)]
+#[derive(Debug)]
+#[derive(Copy, Clone)]
+pub enum Foo {}
+```
+
+## `multiline_closure_forces_block`
+
+Force multiline closure bodies to be wrapped in a block
+
+- **Default value**: `false`
+- **Possible values**: `false`, `true`
+
+#### `false` (default):
+
+```rust
+result.and_then(|maybe_value| match maybe_value {
+    None => ...,
+    Some(value) => ...,
+})
+```
+
+#### `true`:
+
+```rust
+
+result.and_then(|maybe_value| {
+    match maybe_value {
+        None => ...,
+        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 {
+            println!("Hello World");
+        }
+    }
+    Some(dolor) => ...,
+}
+```
+
 ## `newline_style`
 
 Unix or Windows line endings
@@ -1049,7 +1398,7 @@ Convert /* */ comments to // comments where possible
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 // Lorem ipsum:
@@ -1076,7 +1425,7 @@ Reorder lists of names in import statements alphabetically
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 use super::{lorem, ipsum, dolor, sit};
@@ -1097,7 +1446,7 @@ Reorder import statements alphabetically
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 use lorem;
@@ -1126,7 +1475,7 @@ Reorder import statements in group
 
 **Note:** This option takes effect only when [`reorder_imports`](#reorder_imports) is set to `true`.
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 use std::mem;
@@ -1191,18 +1540,18 @@ Leave a space after the colon in a trait or lifetime bound
 - **Default value**: `true`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `true` (default):
 
 ```rust
-fn lorem<T:Eq>(t: T) {
+fn lorem<T: Eq>(t: T) {
     // body
 }
 ```
 
-#### `true`:
+#### `false`:
 
 ```rust
-fn lorem<T: Eq>(t: T) {
+fn lorem<T:Eq>(t: T) {
     // body
 }
 ```
@@ -1216,7 +1565,7 @@ The maximum diff of width between struct fields to be aligned with each other.
 - **Default value** : 0
 - **Possible values**: any positive integer
 
-#### `0`:
+#### `0` (default):
 
 ```rust
 struct Foo {
@@ -1243,21 +1592,21 @@ Leave a space after the colon in a struct literal field
 - **Default value**: `true`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `true` (default):
 
 ```rust
 let lorem = Lorem {
-    ipsum:dolor,
-    sit:amet,
+    ipsum: dolor,
+    sit: amet,
 };
 ```
 
-#### `true`:
+#### `false`:
 
 ```rust
 let lorem = Lorem {
-    ipsum: dolor,
-    sit: amet,
+    ipsum:dolor,
+    sit:amet,
 };
 ```
 
@@ -1270,19 +1619,19 @@ Leave a space after the colon in a type annotation
 - **Default value**: `true`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `true` (default):
 
 ```rust
-fn lorem<T: Eq>(t:T) {
-    let ipsum:Dolor = sit;
+fn lorem<T: Eq>(t: T) {
+    let ipsum: Dolor = sit;
 }
 ```
 
-#### `true`:
+#### `false`:
 
 ```rust
-fn lorem<T: Eq>(t: T) {
-    let ipsum: Dolor = sit;
+fn lorem<T: Eq>(t:T) {
+    let ipsum:Dolor = sit;
 }
 ```
 
@@ -1295,7 +1644,7 @@ Leave a space before the colon in a trait or lifetime bound
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 fn lorem<T: Eq>(t: T) {
@@ -1320,7 +1669,7 @@ Leave a space before the colon in a struct literal field
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 let lorem = Lorem {
@@ -1347,7 +1696,7 @@ Leave a space before the colon in a type annotation
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 fn lorem<T: Eq>(t: T) {
@@ -1372,7 +1721,7 @@ Put spaces around the .. and ... range operators
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 let lorem = 0..10;
@@ -1391,7 +1740,7 @@ Put spaces within non-empty generic arguments
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 fn lorem<T: Eq>(t: T) {
@@ -1416,7 +1765,7 @@ Put spaces within non-empty parentheses
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 fn lorem<T: Eq>(t: T) {
@@ -1441,7 +1790,7 @@ Put spaces within non-empty square brackets
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 let lorem: [usize; 2] = [ipsum, dolor];
@@ -1462,6 +1811,12 @@ Multiline style on literal structs
 - **Default value**: `"PreferSingle"`
 - **Possible values**: `"ForceMulti"`, `"PreferSingle"`
 
+#### `"PreferSingle"` (default):
+
+```rust
+let lorem = Lorem { ipsum: dolor, sit: amet };
+```
+
 #### `"ForceMulti"`:
 
 ```rust
@@ -1471,12 +1826,6 @@ let lorem = Lorem {
 };
 ```
 
-#### `"PreferSingle"`:
-
-```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`
@@ -1486,7 +1835,7 @@ Style of struct definition
 - **Default value**: `"Block"`
 - **Possible values**: `"Block"`, `"Visual"`
 
-#### `"Block"`:
+#### `"Block"` (default):
 
 ```rust
 let lorem = Lorem {
@@ -1560,25 +1909,25 @@ Number of spaces per tab
 - **Default value**: `4`
 - **Possible values**: any positive integer
 
-#### `2`:
+#### `4` (default):
 
 ```rust
 fn lorem() {
-  let ipsum = dolor();
-  let sit = vec![
-    "amet consectetur adipiscing elit."
-  ];
+    let ipsum = dolor();
+    let sit = vec![
+        "amet consectetur adipiscing elit."
+    ];
 }
 ```
 
-#### `4`:
+#### `2`:
 
 ```rust
 fn lorem() {
-    let ipsum = dolor();
-    let sit = vec![
-        "amet consectetur adipiscing elit."
-    ];
+  let ipsum = dolor();
+  let sit = vec![
+    "amet consectetur adipiscing elit."
+  ];
 }
 ```
 
@@ -1591,7 +1940,7 @@ Retain some formatting characteristics from the source code
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 lorem
@@ -1621,10 +1970,10 @@ How to handle trailing commas for lists
 - **Default value**: `"Vertical"`
 - **Possible values**: `"Always"`, `"Never"`, `"Vertical"`
 
-#### `"Always"`:
+#### `"Vertical"` (default):
 
 ```rust
-let Lorem { ipsum, dolor, sit, } = amet;
+let Lorem { ipsum, dolor, sit } = amet;
 let Lorem {
     ipsum,
     dolor,
@@ -1635,21 +1984,21 @@ let Lorem {
 } = elit;
 ```
 
-#### `"Never"`:
+#### `"Always"`:
 
 ```rust
-let Lorem { ipsum, dolor, sit } = amet;
+let Lorem { ipsum, dolor, sit, } = amet;
 let Lorem {
     ipsum,
     dolor,
     sit,
     amet,
     consectetur,
-    adipiscing
+    adipiscing,
 } = elit;
 ```
 
-#### `"Vertical"`:
+#### `"Never"`:
 
 ```rust
 let Lorem { ipsum, dolor, sit } = amet;
@@ -1659,12 +2008,33 @@ let Lorem {
     sit,
     amet,
     consectetur,
-    adipiscing,
+    adipiscing
 } = elit;
 ```
 
 See also: [`match_block_trailing_comma`](#match_block_trailing_comma).
 
+## `trailing_semicolon`
+
+Add trailing semicolon after break, continue and return
+
+- **Default value**: `true`
+- **Possible values**: `true`, `false`
+
+#### `true` (default):
+```rust
+fn foo() -> usize {
+    return 0;
+}
+```
+
+#### `false`:
+```rust
+fn foo() -> usize {
+    return 0
+}
+```
+
 ## `type_punctuation_density`
 
 Determines if `+` or `=` are wrapped in spaces in the punctuation of types
@@ -1672,18 +2042,18 @@ Determines if `+` or `=` are wrapped in spaces in the punctuation of types
 - **Default value**: `"Wide"`
 - **Possible values**: `"Compressed"`, `"Wide"`
 
-#### `"Compressed"`:
+#### `"Wide"` (default):
 
 ```rust
-fn lorem<Ipsum: Dolor+Sit=Amet>() {
+fn lorem<Ipsum: Dolor + Sit = Amet>() {
        // body
 }
 ```
 
-#### `"Wide"`:
+#### `"Compressed"`:
 
 ```rust
-fn lorem<Ipsum: Dolor + Sit = Amet>() {
+fn lorem<Ipsum: Dolor+Sit=Amet>() {
        // body
 }
 ```
@@ -1695,7 +2065,7 @@ Replace uses of the try! macro by the ? shorthand
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 let lorem = try!(ipsum.map(|dolor|dolor.sit()));
@@ -1709,32 +2079,36 @@ let lorem = ipsum.map(|dolor| dolor.sit())?;
 
 ## `where_density`
 
-Density of a where clause
+Density of a where clause.
 
 - **Default value**: `"CompressedIfEmpty"`
 - **Possible values**: `"Compressed"`, `"CompressedIfEmpty"`, `"Tall"`, `"Vertical"`
 
-#### `"Compressed"`:
+#### `"CompressedIfEmpty"` (default):
 
 ```rust
 trait Lorem {
-    fn ipsum<Dolor>(dolor: Dolor) -> Sit where Dolor: Eq;
+    fn ipsum<Dolor>(dolor: Dolor) -> Sit
+    where Dolor: Eq;
 
-    fn ipsum<Dolor>(dolor: Dolor) -> Sit where Dolor: Eq {
+    fn ipsum<Dolor>(dolor: Dolor) -> Sit
+    where
+        Dolor: Eq,
+    {
         // body
     }
 }
 ```
 
-#### `"CompressedIfEmpty"`:
+#### `"Compressed"`:
 
 ```rust
 trait Lorem {
-    fn ipsum<Dolor>(dolor: Dolor) -> Sit where Dolor: Eq;
+    fn ipsum<Dolor>(dolor: Dolor) -> Sit
+    where Dolor: Eq;
 
     fn ipsum<Dolor>(dolor: Dolor) -> Sit
-        where Dolor: Eq
-    {
+    where Dolor: Eq {
         // body
     }
 }
@@ -1745,10 +2119,12 @@ trait Lorem {
 ```rust
 trait Lorem {
     fn ipsum<Dolor>(dolor: Dolor) -> Sit
-        where Dolor: Eq;
+    where
+        Dolor: Eq;
 
     fn ipsum<Dolor>(dolor: Dolor) -> Sit
-        where Dolor: Eq
+    where
+        Dolor: Eq,
     {
         // body
     }
@@ -1783,23 +2159,27 @@ Element layout inside a where clause
 - **Default value**: `"Vertical"`
 - **Possible values**: `"Horizontal"`, `"HorizontalVertical"`, `"Mixed"`, `"Vertical"`
 
-#### `"Horizontal"`:
+#### `"Vertical"` (default):
 
 ```rust
 fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
-    where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur
+    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
+    where Ipsum: IpsumDolorSitAmet,
+          Dolor: DolorSitAmetConsectetur,
+          Sit: SitAmetConsecteturAdipiscing,
+          Amet: AmetConsecteturAdipiscingElit
 {
     // body
 }
 ```
 
-#### `"HorizontalVertical"`:
+#### `"Horizontal"`:
 
 ```rust
 fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
@@ -1809,16 +2189,13 @@ fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
 }
 
 fn lorem<Ipsum, Dolor, Sit, Amet>(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet)
-    where Ipsum: IpsumDolorSitAmet,
-          Dolor: DolorSitAmetConsectetur,
-          Sit: SitAmetConsecteturAdipiscing,
-          Amet: AmetConsecteturAdipiscingElit
+    where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur, Sit: SitAmetConsecteturAdipiscing, Amet: AmetConsecteturAdipiscingElit
 {
     // body
 }
 ```
 
-#### `"Mixed"`:
+#### `"HorizontalVertical"`:
 
 ```rust
 fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
@@ -1828,33 +2205,34 @@ fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
 }
 
 fn lorem<Ipsum, Dolor, Sit, Amet>(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet)
-    where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur,
-          Sit: SitAmetConsecteturAdipiscing, Amet: AmetConsecteturAdipiscingElit
+    where Ipsum: IpsumDolorSitAmet,
+          Dolor: DolorSitAmetConsectetur,
+          Sit: SitAmetConsecteturAdipiscing,
+          Amet: AmetConsecteturAdipiscingElit
 {
     // body
 }
 ```
 
-#### `"Vertical"`:
+#### `"Mixed"`:
 
 ```rust
 fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
-    where Ipsum: IpsumDolorSitAmet,
-          Dolor: DolorSitAmetConsectetur
+    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
+    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`
@@ -1864,32 +2242,34 @@ Indentation style of a where predicate
 - **Default value**: `"Visual"`
 - **Possible values**: `"Block"`, `"Visual"`
 
-#### `"Block"`:
+#### `"Visual"` (default):
 
 ```rust
 fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
     where Ipsum: Eq,
-        Dolor: Eq,
-        Sit: Eq,
-        Amet: Eq
+          Dolor: Eq,
+          Sit: Eq,
+          Amet: Eq
 {
     // body
 }
 ```
 
-#### `"Visual"`:
+#### `"Block"`:
 
 ```rust
 fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
     where Ipsum: Eq,
-          Dolor: Eq,
-          Sit: Eq,
-          Amet: 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`
@@ -1899,7 +2279,7 @@ Overall strategy for where clauses
 - **Default value**: `"Rfc"`
 - **Possible values**: `"Rfc"`, `"Legacy"`
 
-#### `"Rfc"`:
+#### `"Rfc"` (default):
 
 ```rust
 fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
@@ -1935,7 +2315,7 @@ Break comments to fit on the line
 - **Default value**: `false`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `false` (default):
 
 ```rust
 // Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
@@ -1953,33 +2333,28 @@ Break comments to fit on the line
 
 ## `wrap_match_arms`
 
-Wrap multiline match arms in blocks
+Wrap the body of arms in blocks when it does not fit on the same line with the pattern of arms
 
 - **Default value**: `true`
 - **Possible values**: `true`, `false`
 
-#### `false`:
+#### `true` (default):
 
 ```rust
 match lorem {
     true => {
-        let ipsum = dolor;
-        println!("{}", ipsum);
-    }
-    false => {
-        println!("{}", sit)
+        foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(x)
     }
+    false => println!("{}", sit),
 }
 ```
 
-#### `true`:
+#### `false`:
 
 ```rust
 match lorem {
-    true => {
-        let ipsum = dolor;
-        println!("{}", ipsum);
-    }
+    true =>
+        foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(x),
     false => println!("{}", sit),
 }
 ```
@@ -1990,5 +2365,5 @@ See also: [`indent_match_arms`](#indent_match_arms), [`match_block_trailing_comm
 
 What Write Mode to use when none is supplied: Replace, Overwrite, Display, Diff, Coverage
 
-- **Default value**: `"Replace"`
+- **Default value**: `"Overwrite"`
 - **Possible values**: `"Checkstyle"`, `"Coverage"`, `"Diff"`, `"Display"`, `"Overwrite"`, `"Plain"`, `"Replace"`