]> git.lizzy.rs Git - rust.git/blob - Configurations.md
Replace various small width heuristics with a single option
[rust.git] / Configurations.md
1 # Configuring Rustfmt
2
3 Rustfmt is designed to be very configurable. You can create a TOML file called `rustfmt.toml` or `.rustfmt.toml`, place it in the project or any other parent directory and it will apply the options in that file.
4
5 A possible content of `rustfmt.toml` or `.rustfmt.toml` might look like this:
6
7 ```toml
8 indent_style = "Block"
9 reorder_imported_names = true
10 ```
11
12 # Configuration Options
13
14 Below you find a detailed visual guide on all the supported configuration options of rustfmt:
15
16
17 ## `indent_style`
18
19 Indent on expressions or items.
20
21 - **Default value**: `"Block"`
22 - **Possible values**: `"Block"`, `"Visual"`
23
24 ### Array
25
26 #### `"Block"` (default):
27
28 ```rust
29 let lorem = vec![
30     "ipsum",
31     "dolor",
32     "sit",
33     "amet",
34     "consectetur",
35     "adipiscing",
36     "elit",
37 ];
38 ```
39
40 #### `"Visual"`:
41
42 ```rust
43 let lorem = vec!["ipsum",
44                  "dolor",
45                  "sit",
46                  "amet",
47                  "consectetur",
48                  "adipiscing",
49                  "elit"];
50 ```
51
52 ### Control flow
53
54 #### `"Block"` (default):
55
56 ```rust
57 if lorem_ipsum &&
58     dolor_sit &&
59     amet_consectetur
60 {
61     // ...
62 }
63 ```
64
65 #### `"Visual"`:
66
67 ```rust
68 if lorem_ipsum &&
69    dolor_sit &&
70    amet_consectetur {
71     // ...
72 }
73 ```
74
75 See also: [`control_brace_style`](#control_brace_style).
76
77 ### Function arguments
78
79 #### `"Block"` (default):
80
81 ```rust
82 fn lorem() {}
83
84 fn lorem(ipsum: usize) {}
85
86 fn lorem(
87     ipsum: usize,
88     dolor: usize,
89     sit: usize,
90     amet: usize,
91     consectetur: usize,
92     adipiscing: usize,
93     elit: usize,
94 ) {
95     // body
96 }
97 ```
98
99 #### `"Visual"`:
100
101 ```rust
102 fn lorem() {}
103
104 fn lorem(ipsum: usize) {}
105
106 fn lorem(ipsum: usize,
107          dolor: usize,
108          sit: usize,
109          amet: usize,
110          consectetur: usize,
111          adipiscing: usize,
112          elit: usize) {
113     // body
114 }
115 ```
116
117 ### Function calls
118
119 #### `"Block"` (default):
120
121 ```rust
122 lorem(
123     "lorem",
124     "ipsum",
125     "dolor",
126     "sit",
127     "amet",
128     "consectetur",
129     "adipiscing",
130     "elit",
131 );
132 ```
133
134 #### `"Visual"`:
135
136 ```rust
137 lorem("lorem",
138       "ipsum",
139       "dolor",
140       "sit",
141       "amet",
142       "consectetur",
143       "adipiscing",
144       "elit");
145 ```
146
147 ### Generics
148
149 #### `"Block"` (default):
150
151 ```rust
152 fn lorem<
153     Ipsum: Eq = usize,
154     Dolor: Eq = usize,
155     Sit: Eq = usize,
156     Amet: Eq = usize,
157     Adipiscing: Eq = usize,
158     Consectetur: Eq = usize,
159     Elit: Eq = usize
160 >(
161     ipsum: Ipsum,
162     dolor: Dolor,
163     sit: Sit,
164     amet: Amet,
165     adipiscing: Adipiscing,
166     consectetur: Consectetur,
167     elit: Elit,
168 ) -> T {
169     // body
170 }
171 ```
172
173 #### `"Visual"`:
174
175 ```rust
176 fn lorem<Ipsum: Eq = usize,
177          Dolor: Eq = usize,
178          Sit: Eq = usize,
179          Amet: Eq = usize,
180          Adipiscing: Eq = usize,
181          Consectetur: Eq = usize,
182          Elit: Eq = usize>
183     (ipsum: Ipsum,
184      dolor: Dolor,
185      sit: Sit,
186      amet: Amet,
187      adipiscing: Adipiscing,
188      consectetur: Consectetur,
189      elit: Elit)
190      -> T {
191     // body
192 }
193 ```
194
195 #### Struct
196
197 #### `"Block"` (default):
198
199 ```rust
200 let lorem = Lorem {
201     ipsum: dolor,
202     sit: amet,
203 };
204 ```
205
206 #### `"Visual"`:
207
208 ```rust
209 let lorem = Lorem { ipsum: dolor,
210                     sit: amet, };
211 ```
212
213 See also: [`struct_lit_single_line`](#struct_lit_single_line), [`indent_style`](#indent_style).
214
215 ### Where predicates
216
217 #### `"Block"` (default):
218
219 ```rust
220 fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
221 where 
222     Ipsum: Eq,
223     Dolor: Eq,
224     Sit: Eq,
225     Amet: Eq
226 {
227     // body
228 }
229 ```
230
231 #### `"Visual"`:
232
233 ```rust
234 fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
235     where Ipsum: Eq,
236           Dolor: Eq,
237           Sit: Eq,
238           Amet: Eq
239 {
240     // body
241 }
242 ```
243
244 See also: [`where_density`](#where_density), [`where_layout`](#where_layout).
245
246
247 ## `same_line_attributes`
248
249 Try to put attributes on the same line as fields and variants
250
251 - **Default value**: `true`
252 - **Possible values**: `true`, `false`
253
254 #### `true` (default):
255
256 ```rust
257 struct Lorem {
258     #[serde(rename = "Ipsum")] ipsum: usize,
259     #[serde(rename = "Dolor")] dolor: usize,
260     #[serde(rename = "Amet")] amet: usize,
261 }
262
263 enum Lorem {
264     #[serde(skip_serializing)] Ipsum,
265     #[serde(skip_serializing)] Dolor,
266     #[serde(skip_serializing)] Amet,
267 }
268 ```
269
270 #### `false`:
271
272 ```rust
273 struct Lorem {
274     #[serde(rename = "Ipsum")]
275     ipsum: usize,
276     #[serde(rename = "Dolor")]
277     dolor: usize,
278     #[serde(rename = "Amet")]
279     amet: usize,
280 }
281
282 enum Lorem {
283     #[serde(skip_serializing)]
284     Ipsum,
285     #[serde(skip_serializing)]
286     Dolor,
287     #[serde(skip_serializing)]
288     Amet,
289 }
290 ```
291
292 ## `use_small_heuristics`
293
294 Whether to use different formatting for items and expressions if they satisfy a heuristic notion of 'small'.
295
296 - **Default value**: `true`
297 - **Possible values**: `true`, `false`
298
299 #### `true` (default):
300
301 ```rust
302 enum Lorem {
303     Ipsum,
304     Dolor(bool),
305     Sit { amet: Consectetur, adipiscing: Elit },
306 }
307
308 fn main() {
309     lorem(
310         "lorem",
311         "ipsum",
312         "dolor",
313         "sit",
314         "amet",
315         "consectetur",
316         "adipiscing",
317     );
318
319     let lorem = Lorem { ipsum: dolor, sit: amet };
320
321     let lorem = if ipsum { dolor } else { sit };
322 }
323 ```
324
325 #### `false`:
326
327 ```rust
328 enum Lorem {
329     Ipsum,
330     Dolor(bool),
331     Sit {
332         amet: Consectetur,
333         adipiscing: Elit,
334     },
335 }
336
337 fn main() {
338     lorem("lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing");
339
340     let lorem = Lorem {
341         ipsum: dolor,
342         sit: amet,
343     };
344
345     let lorem = if ipsum {
346         dolor
347     } else {
348         sit
349     };
350 }
351 ```
352
353 ## `binop_separator`
354
355 Where to put a binary operator when a binary expression goes multiline.
356
357 - **Default value**: `"Front"`
358 - **Possible values**: `"Front"`, `"Back"`
359
360 #### `"Front"` (default):
361
362 ```rust
363 let or = foo
364     || bar
365     || foobar;
366
367 let sum = 1234
368     + 5678
369     + 910;
370
371 let range = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
372     ..bbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
373 ```
374
375 #### `"Back"`:
376
377 ```rust
378 let or = foo ||
379     bar ||
380     foobar;
381
382 let sum = 1234 +
383     5678 +
384     910;
385
386 let range = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..
387     bbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
388 ```
389
390 ## `chain_indent`
391
392 Indentation of chain
393
394 - **Default value**: `"Block"`
395 - **Possible values**: `"Block"`, `"Visual"`
396
397 #### `"Block"` (default):
398
399 ```rust
400 let lorem = ipsum
401     .dolor()
402     .sit()
403     .amet()
404     .consectetur()
405     .adipiscing()
406     .elit();
407 ```
408
409 #### `"Visual"`:
410
411 ```rust
412 let lorem = ipsum.dolor()
413                  .sit()
414                  .amet()
415                  .consectetur()
416                  .adipiscing()
417                  .elit();
418 ```
419
420
421
422 ## `combine_control_expr`
423
424 Combine control expressions with function calls.
425
426 - **Default value**: `true`
427 - **Possible values**: `true`, `false`
428
429 #### `true` (default):
430
431 ```rust
432 fn example() {
433     // If
434     foo!(if x {
435         foo();
436     } else {
437         bar();
438     });
439
440     // IfLet
441     foo!(if let Some(..) = x {
442         foo();
443     } else {
444         bar();
445     });
446
447     // While
448     foo!(while x {
449         foo();
450         bar();
451     });
452
453     // WhileLet
454     foo!(while let Some(..) = x {
455         foo();
456         bar();
457     });
458
459     // ForLoop
460     foo!(for x in y {
461         foo();
462         bar();
463     });
464
465     // Loop
466     foo!(loop {
467         foo();
468         bar();
469     });
470 }
471 ```
472
473 #### `false`:
474
475 ```rust
476 fn example() {
477     // If
478     foo!(
479         if x {
480             foo();
481         } else {
482             bar();
483         }
484     );
485
486     // IfLet
487     foo!(
488         if let Some(..) = x {
489             foo();
490         } else {
491             bar();
492         }
493     );
494
495     // While
496     foo!(
497         while x {
498             foo();
499             bar();
500         }
501     );
502
503     // WhileLet
504     foo!(
505         while let Some(..) = x {
506             foo();
507             bar();
508         }
509     );
510
511     // ForLoop
512     foo!(
513         for x in y {
514             foo();
515             bar();
516         }
517     );
518
519     // Loop
520     foo!(
521         loop {
522             foo();
523             bar();
524         }
525     );
526 }
527 ```
528
529 ## `comment_width`
530
531 Maximum length of comments. No effect unless`wrap_comments = true`.
532
533 - **Default value**: `80`
534 - **Possible values**: any positive integer
535
536 **Note:** A value of `0` results in [`wrap_comments`](#wrap_comments) being applied regardless of a line's width.
537
538 #### Comments shorter than `comment_width`:
539 ```rust
540 // Lorem ipsum dolor sit amet, consectetur adipiscing elit.
541 ```
542
543 #### Comments longer than `comment_width`:
544 ```rust
545 // Lorem ipsum dolor sit amet,
546 // consectetur adipiscing elit.
547 ```
548
549 See also [`wrap_comments`](#wrap_comments).
550
551 ## `condense_wildcard_suffixes`
552
553 Replace strings of _ wildcards by a single .. in tuple patterns
554
555 - **Default value**: `false`
556 - **Possible values**: `true`, `false`
557
558 #### `false` (default):
559
560 ```rust
561 let (lorem, ipsum, _, _) = (1, 2, 3, 4);
562 ```
563
564 #### `true`:
565
566 ```rust
567 let (lorem, ipsum, ..) = (1, 2, 3, 4);
568 ```
569
570 ## `control_brace_style`
571
572 Brace style for control flow constructs
573
574 - **Default value**: `"AlwaysSameLine"`
575 - **Possible values**: `"AlwaysNextLine"`, `"AlwaysSameLine"`, `"ClosingNextLine"`
576
577 #### `"AlwaysSameLine"` (default):
578
579 ```rust
580 if lorem {
581     println!("ipsum!");
582 } else {
583     println!("dolor!");
584 }
585 ```
586
587 #### `"AlwaysNextLine"`:
588
589 ```rust
590 if lorem
591 {
592     println!("ipsum!");
593 }
594 else
595 {
596     println!("dolor!");
597 }
598 ```
599
600 #### `"ClosingNextLine"`:
601
602 ```rust
603 if lorem {
604     println!("ipsum!");
605 }
606 else {
607     println!("dolor!");
608 }
609 ```
610
611 ## `disable_all_formatting`
612
613 Don't reformat anything
614
615 - **Default value**: `false`
616 - **Possible values**: `true`, `false`
617
618 ## `error_on_line_overflow`
619
620 Error if unable to get all lines within `max_width`
621
622 - **Default value**: `true`
623 - **Possible values**: `true`, `false`
624
625 See also [`max_width`](#max_width).
626
627 ## `error_on_line_overflow_comments`
628
629 Error if unable to get all comment lines within `comment_width`.
630
631 - **Default value**: `true`
632 - **Possible values**: `true`, `false`
633
634 See also [`comment_width`](#comment_width).
635
636 ## `fn_args_density`
637
638 Argument density in functions
639
640 - **Default value**: `"Tall"`
641 - **Possible values**: `"Compressed"`, `"CompressedIfEmpty"`, `"Tall"`, `"Vertical"`
642
643 #### `"Tall"` (default):
644
645 ```rust
646 trait Lorem {
647     fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet);
648
649     fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet) {
650         // body
651     }
652
653     fn lorem(
654         ipsum: Ipsum,
655         dolor: Dolor,
656         sit: Sit,
657         amet: Amet,
658         consectetur: Consectetur,
659         adipiscing: Adipiscing,
660         elit: Elit,
661     );
662
663     fn lorem(
664         ipsum: Ipsum,
665         dolor: Dolor,
666         sit: Sit,
667         amet: Amet,
668         consectetur: Consectetur,
669         adipiscing: Adipiscing,
670         elit: Elit,
671     ) {
672         // body
673     }
674 }
675 ```
676
677 #### `"Compressed"`:
678
679 ```rust
680 trait Lorem {
681     fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet);
682
683     fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet) {
684         // body
685     }
686
687     fn lorem(
688         ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur,
689         adipiscing: Adipiscing, elit: Elit,
690     );
691
692     fn lorem(
693         ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur,
694         adipiscing: Adipiscing, elit: Elit,
695     ) {
696         // body
697     }
698 }
699 ```
700
701 #### `"CompressedIfEmpty"`:
702
703 ```rust
704 trait Lorem {
705     fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet);
706
707     fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet) {
708         // body
709     }
710
711     fn lorem(
712         ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur,
713         adipiscing: Adipiscing, elit: Elit,
714     );
715
716     fn lorem(
717         ipsum: Ipsum,
718         dolor: Dolor,
719         sit: Sit,
720         amet: Amet,
721         consectetur: Consectetur,
722         adipiscing: Adipiscing,
723         elit: Elit,
724     ) {
725         // body
726     }
727 }
728 ```
729
730 #### `"Vertical"`:
731
732 ```rust
733 trait Lorem {
734     fn lorem(ipsum: Ipsum,
735              dolor: Dolor,
736              sit: Sit,
737              amet: Amet);
738
739     fn lorem(ipsum: Ipsum,
740              dolor: Dolor,
741              sit: Sit,
742              amet: Amet) {
743         // body
744     }
745
746     fn lorem(ipsum: Ipsum,
747              dolor: Dolor,
748              sit: Sit,
749              amet: Amet,
750              consectetur: Consectetur,
751              adipiscing: Adipiscing,
752              elit: Elit);
753
754     fn lorem(ipsum: Ipsum,
755              dolor: Dolor,
756              sit: Sit,
757              amet: Amet,
758              consectetur: Consectetur,
759              adipiscing: Adipiscing,
760              elit: Elit) {
761         // body
762     }
763 }
764 ```
765
766
767 ## `brace_style`
768
769 Brace style for items
770
771 - **Default value**: `"SameLineWhere"`
772 - **Possible values**: `"AlwaysNextLine"`, `"PreferSameLine"`, `"SameLineWhere"`
773
774 ### Functions
775
776 #### `"SameLineWhere"` (default):
777
778 ```rust
779 fn lorem() {
780     // body
781 }
782
783 fn lorem(ipsum: usize) {
784     // body
785 }
786
787 fn lorem<T>(ipsum: T)
788 where
789     T: Add + Sub + Mul + Div,
790 {
791     // body
792 }
793 ```
794
795 #### `"AlwaysNextLine"`:
796
797 ```rust
798 fn lorem()
799 {
800     // body
801 }
802
803 fn lorem(ipsum: usize)
804 {
805     // body
806 }
807
808 fn lorem<T>(ipsum: T)
809 where
810     T: Add + Sub + Mul + Div,
811 {
812     // body
813 }
814 ```
815
816 #### `"PreferSameLine"`:
817
818 ```rust
819 fn lorem() {
820     // body
821 }
822
823 fn lorem(ipsum: usize) {
824     // body
825 }
826
827 fn lorem<T>(ipsum: T)
828 where
829     T: Add + Sub + Mul + Div, {
830     // body
831 }
832 ```
833
834 ### Structs and enums
835
836 #### `"SameLineWhere"` (default):
837
838 ```rust
839 struct Lorem {
840     ipsum: bool,
841 }
842
843 struct Dolor<T>
844     where T: Eq
845 {
846     sit: T,
847 }
848 ```
849
850 #### `"AlwaysNextLine"`:
851
852 ```rust
853 struct Lorem
854 {
855     ipsum: bool,
856 }
857
858 struct Dolor<T>
859     where T: Eq
860 {
861     sit: T,
862 }
863 ```
864
865 #### `"PreferSameLine"`:
866
867 ```rust
868 struct Lorem {
869     ipsum: bool,
870 }
871
872 struct Dolor<T>
873     where T: Eq {
874     sit: T,
875 }
876 ```
877
878
879
880 ## `fn_empty_single_line`
881
882 Put empty-body functions on a single line
883
884 - **Default value**: `true`
885 - **Possible values**: `true`, `false`
886
887 #### `true` (default):
888
889 ```rust
890 fn lorem() {}
891 ```
892
893 #### `false`:
894
895 ```rust
896 fn lorem() {
897 }
898 ```
899
900 See also [`control_brace_style`](#control_brace_style).
901
902
903 ## `fn_single_line`
904
905 Put single-expression functions on a single line
906
907 - **Default value**: `false`
908 - **Possible values**: `true`, `false`
909
910 #### `false` (default):
911
912 ```rust
913 fn lorem() -> usize {
914     42
915 }
916
917 fn lorem() -> usize {
918     let ipsum = 42;
919     ipsum
920 }
921 ```
922
923 #### `true`:
924
925 ```rust
926 fn lorem() -> usize { 42 }
927
928 fn lorem() -> usize {
929     let ipsum = 42;
930     ipsum
931 }
932 ```
933
934 See also [`control_brace_style`](#control_brace_style).
935
936 ## `force_explicit_abi`
937
938 Always print the abi for extern items
939
940 - **Default value**: `true`
941 - **Possible values**: `true`, `false`
942
943 **Note:** Non-"C" ABIs are always printed. If `false` then "C" is removed.
944
945 #### `true` (default):
946
947 ```rust
948 extern "C" {
949     pub static lorem: c_int;
950 }
951 ```
952
953 #### `false`:
954
955 ```rust
956 extern {
957     pub static lorem: c_int;
958 }
959 ```
960
961 ## `format_strings`
962
963 Format string literals where necessary
964
965 - **Default value**: `false`
966 - **Possible values**: `true`, `false`
967
968 #### `false` (default):
969
970 ```rust
971 let lorem = "ipsum dolor sit amet consectetur adipiscing elit lorem ipsum dolor sit";
972 ```
973
974 #### `true`:
975
976 ```rust
977 let lorem =
978     "ipsum dolor sit amet consectetur \
979      adipiscing elit lorem ipsum dolor sit";
980 ```
981
982 See also [`max_width`](#max_width).
983
984 ## `hard_tabs`
985
986 Use tab characters for indentation, spaces for alignment
987
988 - **Default value**: `false`
989 - **Possible values**: `true`, `false`
990
991 #### `false` (default):
992
993 ```rust
994 fn lorem() -> usize {
995     42 // spaces before 42
996 }
997 ```
998
999 #### `true`:
1000
1001 ```rust
1002 fn lorem() -> usize {
1003         42 // tabs before 42
1004 }
1005 ```
1006
1007 See also: [`tab_spaces`](#tab_spaces).
1008
1009 ## `impl_empty_single_line`
1010
1011 Put empty-body implementations on a single line
1012
1013 - **Default value**: `true`
1014 - **Possible values**: `true`, `false`
1015
1016 #### `true` (default):
1017
1018 ```rust
1019 impl Lorem {}
1020 ```
1021
1022 #### `false`:
1023
1024 ```rust
1025 impl Lorem {
1026 }
1027 ```
1028
1029 See also [`brace_style`](#brace_style).
1030
1031 ## `indent_match_arms`
1032
1033 Indent match arms instead of keeping them at the same indentation level as the match keyword
1034
1035 - **Default value**: `true`
1036 - **Possible values**: `true`, `false`
1037
1038 #### `true` (default):
1039
1040 ```rust
1041 match lorem {
1042     Lorem::Ipsum => (),
1043     Lorem::Dolor => (),
1044     Lorem::Sit => (),
1045     Lorem::Amet => (),
1046 }
1047 ```
1048
1049 #### `false`:
1050
1051 ```rust
1052 match lorem {
1053 Lorem::Ipsum => (),
1054 Lorem::Dolor => (),
1055 Lorem::Sit => (),
1056 Lorem::Amet => (),
1057 }
1058 ```
1059
1060 See also: [`match_block_trailing_comma`](#match_block_trailing_comma), [`wrap_match_arms`](#wrap_match_arms).
1061
1062 ## `imports_indent`
1063
1064 Indent style of imports
1065
1066 - **Default Value**: `"Visual"`
1067 - **Possible values**: `"Block"`, `"Visual"`
1068
1069 #### `"Visual"` (default):
1070
1071 ```rust
1072 use foo::{xxx,
1073           yyy,
1074           zzz};
1075 ```
1076
1077 #### `"Block"`:
1078
1079 ```rust
1080 use foo::{
1081     xxx,
1082     yyy,
1083     zzz,
1084 };
1085 ```
1086
1087 See also: [`imports_layout`](#imports_layout).
1088
1089 ## `imports_layout`
1090
1091 Item layout inside a imports block
1092
1093 - **Default value**: "Mixed"
1094 - **Possible values**: "Horizontal", "HorizontalVertical", "Mixed", "Vertical"
1095
1096 #### `"Mixed"` (default):
1097
1098 ```rust
1099 use foo::{xxx, yyy, zzz};
1100
1101 use foo::{aaa, bbb, ccc,
1102           ddd, eee, fff};
1103 ```
1104
1105 #### `"Horizontal"`:
1106
1107 **Note**: This option forces to put everything on one line and may exceeds `max_width`.
1108
1109 ```rust
1110 use foo::{xxx, yyy, zzz};
1111
1112 use foo::{aaa, bbb, ccc, ddd, eee, fff};
1113 ```
1114
1115 #### `"HorizontalVertical"`:
1116
1117 ```rust
1118 use foo::{xxx, yyy, zzz};
1119
1120 use foo::{aaa,
1121           bbb,
1122           ccc,
1123           ddd,
1124           eee,
1125           fff};
1126 ```
1127
1128 #### `"Vertical"`:
1129
1130 ```rust
1131 use foo::{xxx,
1132           yyy,
1133           zzz};
1134
1135 use foo::{aaa,
1136           bbb,
1137           ccc,
1138           ddd,
1139           eee,
1140           fff};
1141 ```
1142
1143 ## `match_arm_forces_newline`
1144
1145 Consistently put match arms (block based or not) in a newline.
1146
1147 - **Default value**: `false`
1148 - **Possible values**: `true`, `false`
1149
1150 #### `false` (default):
1151
1152 ```rust
1153 match x {
1154     // a non-empty block
1155     X0 => {
1156         f();
1157     }
1158     // an empty block
1159     X1 => {}
1160     // a non-block
1161     X2 => println!("ok"),
1162 }
1163 ```
1164
1165 #### `true`:
1166
1167 ```rust
1168 match x {
1169     // a non-empty block
1170     X0 => {
1171         f();
1172     }
1173     // an empty block
1174     X1 =>
1175         {}
1176     // a non-block
1177     X2 => {
1178         println!("ok")
1179     }
1180 }
1181 ```
1182
1183 See also: [`wrap_match_arms`](#wrap_match_arms).
1184
1185 ## `match_block_trailing_comma`
1186
1187 Put a trailing comma after a block based match arm (non-block arms are not affected)
1188
1189 - **Default value**: `false`
1190 - **Possible values**: `true`, `false`
1191
1192 #### `false` (default):
1193
1194 ```rust
1195 match lorem {
1196     Lorem::Ipsum => {
1197         println!("ipsum");
1198     }
1199     Lorem::Dolor => println!("dolor"),
1200 }
1201 ```
1202
1203 #### `true`:
1204
1205 ```rust
1206 match lorem {
1207     Lorem::Ipsum => {
1208         println!("ipsum");
1209     },
1210     Lorem::Dolor => println!("dolor"),
1211 }
1212 ```
1213
1214 See also: [`indent_match_arms`](#indent_match_arms), [`trailing_comma`](#trailing_comma), [`wrap_match_arms`](#wrap_match_arms).
1215
1216 ## `max_width`
1217
1218 Maximum width of each line
1219
1220 - **Default value**: `100`
1221 - **Possible values**: any positive integer
1222
1223 See also [`error_on_line_overflow`](#error_on_line_overflow).
1224
1225 ## `merge_derives`
1226
1227 Merge multiple derives into a single one.
1228
1229 - **Default value**: `true`
1230 - **Possible values**: `true`, `false`
1231
1232 #### `true` (default):
1233
1234 ```rust
1235 #[derive(Eq, PartialEq, Debug, Copy, Clone)]
1236 pub enum Foo {}
1237 ```
1238
1239 #### `false`:
1240
1241 ```rust
1242 #[derive(Eq, PartialEq)]
1243 #[derive(Debug)]
1244 #[derive(Copy, Clone)]
1245 pub enum Foo {}
1246 ```
1247
1248 ## `multiline_closure_forces_block`
1249
1250 Force multiline closure bodies to be wrapped in a block
1251
1252 - **Default value**: `false`
1253 - **Possible values**: `false`, `true`
1254
1255 #### `false` (default):
1256
1257 ```rust
1258 result.and_then(|maybe_value| match maybe_value {
1259     None => ...,
1260     Some(value) => ...,
1261 })
1262 ```
1263
1264 #### `true`:
1265
1266 ```rust
1267
1268 result.and_then(|maybe_value| {
1269     match maybe_value {
1270         None => ...,
1271         Some(value) => ...,
1272     }
1273 })
1274 ```
1275
1276 ## `multiline_match_arm_forces_block`
1277
1278 Force multiline match arm bodies to be wrapped in a block
1279
1280 - **Default value**: `false`
1281 - **Possible values**: `false`, `true`
1282
1283 #### `false` (default):
1284
1285 ```rust
1286 match lorem {
1287     None => if ipsum {
1288         println!("Hello World");
1289     },
1290     Some(dolor) => ...,
1291 }
1292 ```
1293
1294 #### `true`:
1295
1296 ```rust
1297 match lorem {
1298     None => {
1299         if ipsum {
1300             println!("Hello World");
1301         }
1302     }
1303     Some(dolor) => ...,
1304 }
1305 ```
1306
1307 ## `newline_style`
1308
1309 Unix or Windows line endings
1310
1311 - **Default value**: `"Unix"`
1312 - **Possible values**: `"Native"`, `"Unix"`, `"Windows"`
1313
1314 ## `normalize_comments`
1315
1316 Convert /* */ comments to // comments where possible
1317
1318 - **Default value**: `false`
1319 - **Possible values**: `true`, `false`
1320
1321 #### `false` (default):
1322
1323 ```rust
1324 // Lorem ipsum:
1325 fn dolor() -> usize {}
1326
1327 /* sit amet: */
1328 fn adipiscing() -> usize {}
1329 ```
1330
1331 #### `true`:
1332
1333 ```rust
1334 // Lorem ipsum:
1335 fn dolor() -> usize {}
1336
1337 // sit amet:
1338 fn adipiscing() -> usize {}
1339 ```
1340
1341 ## `reorder_imported_names`
1342
1343 Reorder lists of names in import statements alphabetically
1344
1345 - **Default value**: `false`
1346 - **Possible values**: `true`, `false`
1347
1348 #### `false` (default):
1349
1350 ```rust
1351 use super::{lorem, ipsum, dolor, sit};
1352 ```
1353
1354 #### `true`:
1355
1356 ```rust
1357 use super::{dolor, ipsum, lorem, sit};
1358 ```
1359
1360 See also [`reorder_imports`](#reorder_imports).
1361
1362 ## `reorder_imports`
1363
1364 Reorder import statements alphabetically
1365
1366 - **Default value**: `false`
1367 - **Possible values**: `true`, `false`
1368
1369 #### `false` (default):
1370
1371 ```rust
1372 use lorem;
1373 use ipsum;
1374 use dolor;
1375 use sit;
1376 ```
1377
1378 #### `true`:
1379
1380 ```rust
1381 use dolor;
1382 use ipsum;
1383 use lorem;
1384 use sit;
1385 ```
1386
1387 See also [`reorder_imported_names`](#reorder_imported_names), [`reorder_imports_in_group`](#reorder_imports_in_group).
1388
1389 ## `reorder_imports_in_group`
1390
1391 Reorder import statements in group
1392
1393 - **Default value**: `false`
1394 - **Possible values**: `true`, `false`
1395
1396 **Note:** This option takes effect only when [`reorder_imports`](#reorder_imports) is set to `true`.
1397
1398 #### `false` (default):
1399
1400 ```rust
1401 use std::mem;
1402 use std::io;
1403
1404 use lorem;
1405 use ipsum;
1406 use dolor;
1407 use sit;
1408 ```
1409
1410 #### `true`:
1411
1412 ```rust
1413 use std::io;
1414 use std::mem;
1415
1416 use dolor;
1417 use ipsum;
1418 use lorem;
1419 use sit;
1420 ```
1421
1422 See also [`reorder_imports`](#reorder_imports).
1423
1424 ## `reorder_extern_crates`
1425
1426 Reorder `extern crate` statements alphabetically
1427
1428 - **Default value**: `true`
1429 - **Possible values**: `true`, `false`
1430
1431 #### `true` (default):
1432
1433 ```rust
1434 extern crate dolor;
1435 extern crate ipsum;
1436 extern crate lorem;
1437 extern crate sit;
1438 ```
1439
1440 #### `false`:
1441
1442 ```rust
1443 extern crate lorem;
1444 extern crate ipsum;
1445 extern crate dolor;
1446 extern crate sit;
1447 ```
1448
1449 See also [`reorder_extern_crates_in_group`](#reorder_extern_crates_in_group).
1450
1451 ## `reorder_extern_crates_in_group`
1452
1453 Reorder `extern crate` statements in group
1454
1455 - **Default value**: `true`
1456 - **Possible values**: `true`, `false`
1457
1458 **Note:** This option takes effect only when [`reorder_imports`](#reorder_imports) is set to `true`.
1459
1460 #### `true` (default):
1461
1462 ```rust
1463 extern crate a;
1464 extern crate b;
1465
1466 extern crate dolor;
1467 extern crate ipsum;
1468 extern crate lorem;
1469 extern crate sit;
1470 ```
1471
1472 #### `false`:
1473
1474 ```rust
1475 extern crate b;
1476 extern crate a;
1477
1478 extern crate lorem;
1479 extern crate ipsum;
1480 extern crate dolor;
1481 extern crate sit;
1482 ```
1483
1484 See also [`reorder_extern_crates`](#reorder_extern_crates).
1485
1486 ## `report_todo`
1487
1488 Report `TODO` items in comments.
1489
1490 - **Default value**: `"Never"`
1491 - **Possible values**: `"Always"`, `"Unnumbered"`, `"Never"`
1492
1493 Warns about any comments containing `TODO` in them when set to `"Always"`. If
1494 it contains a `#X` (with `X` being a number) in parentheses following the
1495 `TODO`, `"Unnumbered"` will ignore it.
1496
1497 See also [`report_fixme`](#report_fixme).
1498
1499 ## `report_fixme`
1500
1501 Report `FIXME` items in comments.
1502
1503 - **Default value**: `"Never"`
1504 - **Possible values**: `"Always"`, `"Unnumbered"`, `"Never"`
1505
1506 Warns about any comments containing `FIXME` in them when set to `"Always"`. If
1507 it contains a `#X` (with `X` being a number) in parentheses following the
1508 `FIXME`, `"Unnumbered"` will ignore it.
1509
1510 See also [`report_todo`](#report_todo).
1511
1512
1513 ## `skip_children`
1514
1515 Don't reformat out of line modules
1516
1517 - **Default value**: `false`
1518 - **Possible values**: `true`, `false`
1519
1520 ## `space_after_colon`
1521
1522 Leave a space after the colon.
1523
1524 - **Default value**: `true`
1525 - **Possible values**: `true`, `false`
1526
1527 #### `true` (default):
1528
1529 ```rust
1530 fn lorem<T: Eq>(t: T) {
1531     let lorem: Dolor = Lorem {
1532         ipsum: dolor,
1533         sit: amet,
1534     };
1535 }
1536 ```
1537
1538 #### `false`:
1539
1540 ```rust
1541 fn lorem<T:Eq>(t:T) {
1542     let lorem:Dolor = Lorem {
1543         ipsum:dolor,
1544         sit:amet,
1545     };
1546 }
1547 ```
1548
1549 See also: [`space_before_colon`](#space_before_colon).
1550
1551 ## `space_before_colon`
1552
1553 Leave a space before the colon.
1554
1555 - **Default value**: `false`
1556 - **Possible values**: `true`, `false`
1557
1558 #### `false` (default):
1559
1560 ```rust
1561 fn lorem<T: Eq>(t: T) {
1562     let lorem: Dolor = Lorem {
1563         ipsum: dolor,
1564         sit: amet,
1565     };
1566 }
1567 ```
1568
1569 #### `true`:
1570
1571 ```rust
1572 fn lorem<T : Eq>(t : T) {
1573     let lorem : Dolor = Lorem {
1574         ipsum : dolor,
1575         sit : amet,
1576     };
1577 }
1578 ```
1579
1580 See also: [`space_after_colon`](#space_after_colon).
1581
1582 ## `struct_field_align_threshold`
1583
1584 The maximum diff of width between struct fields to be aligned with each other.
1585
1586 - **Default value** : 0
1587 - **Possible values**: any positive integer
1588
1589 #### `0` (default):
1590
1591 ```rust
1592 struct Foo {
1593     x: u32,
1594     yy: u32,
1595     zzz: u32,
1596 }
1597 ```
1598
1599 #### `20`:
1600
1601 ```rust
1602 struct Foo {
1603     x:   u32,
1604     yy:  u32,
1605     zzz: u32,
1606 }
1607 ```
1608
1609 ```
1610
1611 ## `spaces_around_ranges`
1612
1613 Put spaces around the .. and ... range operators
1614
1615 - **Default value**: `false`
1616 - **Possible values**: `true`, `false`
1617
1618 #### `false` (default):
1619
1620 ```rust
1621 let lorem = 0..10;
1622 ```
1623
1624 #### `true`:
1625
1626 ```rust
1627 let lorem = 0 .. 10;
1628 ```
1629
1630 ## `spaces_within_parens_and_brackets`
1631
1632 Put spaces within non-empty generic arguments
1633
1634 - **Default value**: `false`
1635 - **Possible values**: `true`, `false`
1636
1637 #### `false` (default):
1638
1639 ```rust
1640 fn lorem<T: Eq>(t: T) {
1641     // body
1642 }
1643 ```
1644
1645 #### `true`:
1646
1647 ```rust
1648 fn lorem< T: Eq >(t: T) {
1649     // body
1650 }
1651 ```
1652
1653 See also: [`spaces_within_parens_and_brackets`](#spaces_within_parens_and_brackets), [`spaces_within_parens_and_brackets`](#spaces_within_parens_and_brackets).
1654
1655 ## `spaces_within_parens_and_brackets`
1656
1657 Put spaces within non-empty parentheses
1658
1659 - **Default value**: `false`
1660 - **Possible values**: `true`, `false`
1661
1662 #### `false` (default):
1663
1664 ```rust
1665 fn lorem<T: Eq>(t: T) {
1666     let lorem = (ipsum, dolor);
1667 }
1668 ```
1669
1670 #### `true`:
1671
1672 ```rust
1673 fn lorem<T: Eq>( t: T ) {
1674     let lorem = ( ipsum, dolor );
1675 }
1676 ```
1677
1678 See also: [`spaces_within_parens_and_brackets`](#spaces_within_parens_and_brackets), [`spaces_within_parens_and_brackets`](#spaces_within_parens_and_brackets).
1679
1680 ## `spaces_within_parens_and_brackets`
1681
1682 Put spaces within non-empty square brackets
1683
1684 - **Default value**: `false`
1685 - **Possible values**: `true`, `false`
1686
1687 #### `false` (default):
1688
1689 ```rust
1690 let lorem: [usize; 2] = [ipsum, dolor];
1691 ```
1692
1693 #### `true`:
1694
1695 ```rust
1696 let lorem: [ usize; 2 ] = [ ipsum, dolor ];
1697 ```
1698
1699 See also: [`spaces_within_parens_and_brackets`](#spaces_within_parens_and_brackets), [`spaces_within_parens_and_brackets`](#spaces_within_parens_and_brackets).
1700
1701 ## `struct_lit_single_line`
1702
1703 Put small struct literals on a single line
1704
1705 - **Default value**: `true`
1706 - **Possible values**: `true`, `false`
1707
1708 #### `true` (default):
1709
1710 ```rust
1711 let lorem = Lorem { ipsum: dolor, sit: amet };
1712 ```
1713
1714 #### `false`:
1715
1716 ```rust
1717 let lorem = Lorem {
1718     ipsum: dolor,
1719     sit: amet,
1720 };
1721 ```
1722
1723 See also: [`indent_style`](#indent_style).
1724
1725
1726 ## `tab_spaces`
1727
1728 Number of spaces per tab
1729
1730 - **Default value**: `4`
1731 - **Possible values**: any positive integer
1732
1733 #### `4` (default):
1734
1735 ```rust
1736 fn lorem() {
1737     let ipsum = dolor();
1738     let sit = vec![
1739         "amet consectetur adipiscing elit."
1740     ];
1741 }
1742 ```
1743
1744 #### `2`:
1745
1746 ```rust
1747 fn lorem() {
1748   let ipsum = dolor();
1749   let sit = vec![
1750     "amet consectetur adipiscing elit."
1751   ];
1752 }
1753 ```
1754
1755 See also: [`hard_tabs`](#hard_tabs).
1756
1757
1758 ## `trailing_comma`
1759
1760 How to handle trailing commas for lists
1761
1762 - **Default value**: `"Vertical"`
1763 - **Possible values**: `"Always"`, `"Never"`, `"Vertical"`
1764
1765 #### `"Vertical"` (default):
1766
1767 ```rust
1768 let Lorem { ipsum, dolor, sit } = amet;
1769 let Lorem {
1770     ipsum,
1771     dolor,
1772     sit,
1773     amet,
1774     consectetur,
1775     adipiscing,
1776 } = elit;
1777 ```
1778
1779 #### `"Always"`:
1780
1781 ```rust
1782 let Lorem { ipsum, dolor, sit, } = amet;
1783 let Lorem {
1784     ipsum,
1785     dolor,
1786     sit,
1787     amet,
1788     consectetur,
1789     adipiscing,
1790 } = elit;
1791 ```
1792
1793 #### `"Never"`:
1794
1795 ```rust
1796 let Lorem { ipsum, dolor, sit } = amet;
1797 let Lorem {
1798     ipsum,
1799     dolor,
1800     sit,
1801     amet,
1802     consectetur,
1803     adipiscing
1804 } = elit;
1805 ```
1806
1807 See also: [`match_block_trailing_comma`](#match_block_trailing_comma).
1808
1809 ## `trailing_semicolon`
1810
1811 Add trailing semicolon after break, continue and return
1812
1813 - **Default value**: `true`
1814 - **Possible values**: `true`, `false`
1815
1816 #### `true` (default):
1817 ```rust
1818 fn foo() -> usize {
1819     return 0;
1820 }
1821 ```
1822
1823 #### `false`:
1824 ```rust
1825 fn foo() -> usize {
1826     return 0
1827 }
1828 ```
1829
1830 ## `type_punctuation_density`
1831
1832 Determines if `+` or `=` are wrapped in spaces in the punctuation of types
1833
1834 - **Default value**: `"Wide"`
1835 - **Possible values**: `"Compressed"`, `"Wide"`
1836
1837 #### `"Wide"` (default):
1838
1839 ```rust
1840 fn lorem<Ipsum: Dolor + Sit = Amet>() {
1841         // body
1842 }
1843 ```
1844
1845 #### `"Compressed"`:
1846
1847 ```rust
1848 fn lorem<Ipsum: Dolor+Sit=Amet>() {
1849         // body
1850 }
1851 ```
1852
1853 ## `use_try_shorthand`
1854
1855 Replace uses of the try! macro by the ? shorthand
1856
1857 - **Default value**: `false`
1858 - **Possible values**: `true`, `false`
1859
1860 #### `false` (default):
1861
1862 ```rust
1863 let lorem = try!(ipsum.map(|dolor|dolor.sit()));
1864 ```
1865
1866 #### `true`:
1867
1868 ```rust
1869 let lorem = ipsum.map(|dolor| dolor.sit())?;
1870 ```
1871
1872 ## `where_density`
1873
1874 Density of a where clause.
1875
1876 - **Default value**: `"Vertical"`
1877 - **Possible values**: `"Compressed"`, `"CompressedIfEmpty"`, `"Tall"`, `"Vertical"`
1878
1879 #### `"Vertical"` (default):
1880
1881 ```rust
1882 trait Lorem {
1883     fn ipsum<Dolor>(dolor: Dolor) -> Sit
1884     where
1885         Dolor: Eq;
1886
1887     fn ipsum<Dolor>(dolor: Dolor) -> Sit
1888     where
1889         Dolor: Eq,
1890     {
1891         // body
1892     }
1893 }
1894 ```
1895
1896 **Note:** `where_density = "Vertical"` currently produces the same output as `where_density = "Tall"`.
1897
1898 #### `"CompressedIfEmpty"`:
1899
1900 ```rust
1901 trait Lorem {
1902     fn ipsum<Dolor>(dolor: Dolor) -> Sit
1903     where Dolor: Eq;
1904
1905     fn ipsum<Dolor>(dolor: Dolor) -> Sit
1906     where
1907         Dolor: Eq,
1908     {
1909         // body
1910     }
1911 }
1912 ```
1913
1914 #### `"Compressed"`:
1915
1916 ```rust
1917 trait Lorem {
1918     fn ipsum<Dolor>(dolor: Dolor) -> Sit
1919     where Dolor: Eq;
1920
1921     fn ipsum<Dolor>(dolor: Dolor) -> Sit
1922     where Dolor: Eq {
1923         // body
1924     }
1925 }
1926 ```
1927
1928 #### `"Tall"`:
1929
1930 ```rust
1931 trait Lorem {
1932     fn ipsum<Dolor>(dolor: Dolor) -> Sit
1933     where
1934         Dolor: Eq;
1935
1936     fn ipsum<Dolor>(dolor: Dolor) -> Sit
1937     where
1938         Dolor: Eq,
1939     {
1940         // body
1941     }
1942 }
1943 ```
1944
1945 **Note:** `where_density = "Tall"` currently produces the same output as `where_density = "Vertical"`.
1946
1947 See also: [`where_layout`](#where_layout), [`indent_style`](#indent_style).
1948
1949 ## `where_layout`
1950
1951 Element layout inside a where clause
1952
1953 - **Default value**: `"Vertical"`
1954 - **Possible values**: `"Horizontal"`, `"HorizontalVertical"`, `"Mixed"`, `"Vertical"`
1955
1956 #### `"Vertical"` (default):
1957
1958 ```rust
1959 fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
1960     where Ipsum: IpsumDolorSitAmet,
1961           Dolor: DolorSitAmetConsectetur
1962 {
1963     // body
1964 }
1965
1966 fn lorem<Ipsum, Dolor, Sit, Amet>(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet)
1967     where Ipsum: IpsumDolorSitAmet,
1968           Dolor: DolorSitAmetConsectetur,
1969           Sit: SitAmetConsecteturAdipiscing,
1970           Amet: AmetConsecteturAdipiscingElit
1971 {
1972     // body
1973 }
1974 ```
1975
1976 #### `"Horizontal"`:
1977
1978 ```rust
1979 fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
1980     where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur
1981 {
1982     // body
1983 }
1984
1985 fn lorem<Ipsum, Dolor, Sit, Amet>(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet)
1986     where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur, Sit: SitAmetConsecteturAdipiscing, Amet: AmetConsecteturAdipiscingElit
1987 {
1988     // body
1989 }
1990 ```
1991
1992 #### `"HorizontalVertical"`:
1993
1994 ```rust
1995 fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
1996     where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur
1997 {
1998     // body
1999 }
2000
2001 fn lorem<Ipsum, Dolor, Sit, Amet>(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet)
2002     where Ipsum: IpsumDolorSitAmet,
2003           Dolor: DolorSitAmetConsectetur,
2004           Sit: SitAmetConsecteturAdipiscing,
2005           Amet: AmetConsecteturAdipiscingElit
2006 {
2007     // body
2008 }
2009 ```
2010
2011 #### `"Mixed"`:
2012
2013 ```rust
2014 fn lorem<Ipsum, Dolor>(ipsum: Ipsum, dolor: Dolor)
2015     where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur
2016 {
2017     // body
2018 }
2019
2020 fn lorem<Ipsum, Dolor, Sit, Amet>(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet)
2021     where Ipsum: IpsumDolorSitAmet, Dolor: DolorSitAmetConsectetur,
2022           Sit: SitAmetConsecteturAdipiscing, Amet: AmetConsecteturAdipiscingElit
2023 {
2024     // body
2025 }
2026 ```
2027
2028 See also: [`where_density`](#where_density), [`indent_style`](#indent_style).
2029
2030 ## `wrap_comments`
2031
2032 Break comments to fit on the line
2033
2034 - **Default value**: `false`
2035 - **Possible values**: `true`, `false`
2036
2037 #### `false` (default):
2038
2039 ```rust
2040 // 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.
2041 ```
2042
2043 #### `true`:
2044
2045 ```rust
2046 // Lorem ipsum dolor sit amet, consectetur adipiscing elit,
2047 // sed do eiusmod tempor incididunt ut labore et dolore
2048 // magna aliqua. Ut enim ad minim veniam, quis nostrud
2049 // exercitation ullamco laboris nisi ut aliquip ex ea
2050 // commodo consequat.
2051 ```
2052
2053 ## `wrap_match_arms`
2054
2055 Wrap the body of arms in blocks when it does not fit on the same line with the pattern of arms
2056
2057 - **Default value**: `true`
2058 - **Possible values**: `true`, `false`
2059
2060 #### `true` (default):
2061
2062 ```rust
2063 match lorem {
2064     true => {
2065         foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(x)
2066     }
2067     false => println!("{}", sit),
2068 }
2069 ```
2070
2071 #### `false`:
2072
2073 ```rust
2074 match lorem {
2075     true =>
2076         foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo(x),
2077     false => println!("{}", sit),
2078 }
2079 ```
2080
2081 See also: [`indent_match_arms`](#indent_match_arms), [`match_block_trailing_comma`](#match_block_trailing_comma).
2082
2083 ## `write_mode`
2084
2085 What Write Mode to use when none is supplied: Replace, Overwrite, Display, Diff, Coverage
2086
2087 - **Default value**: `"Overwrite"`
2088 - **Possible values**: `"Checkstyle"`, `"Coverage"`, `"Diff"`, `"Display"`, `"Overwrite"`, `"Plain"`, `"Replace"`