Skip to content

Commit 02cb9a1

Browse files
authored
Merge pull request #1886 from topecongiro/issue-1882
Obey to `array_layout` when using mixed tactic for array
2 parents beb88ab + e9199fd commit 02cb9a1

5 files changed

+385
-157
lines changed

Configurations.md

Lines changed: 86 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,13 @@ let a = vec![
4141
```
4242

4343
#### `1000`:
44+
4445
```rust
4546
// Each element will be placed on the same line as much as possible.
46-
let a = vec![0, 1, 2, 3, 4, ...
47-
..., 999, 1000];
47+
let a = vec![
48+
0, 1, 2, 3, 4, ...
49+
..., 999, 1000,
50+
];
4851
```
4952

5053
## `array_layout`
@@ -91,8 +94,7 @@ Maximum width of an array literal before falling back to vertical formatting
9194

9295
#### Lines shorter than `array_width`:
9396
```rust
94-
let lorem =
95-
vec!["ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit"];
97+
let lorem = vec!["ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit"];
9698
```
9799

98100
#### Lines longer than `array_width`:
@@ -199,6 +201,8 @@ lorem_ipsum(|| {
199201
});
200202
```
201203

204+
**Note**: This option only takes effect when `fn_call_style` is set to `"Visual"`.
205+
202206
## `combine_control_expr`
203207

204208
Combine control expressions with function calls.
@@ -400,11 +404,15 @@ trait Lorem {
400404
// body
401405
}
402406

403-
fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur,
404-
adipiscing: Adipiscing, elit: Elit);
407+
fn lorem(
408+
ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur,
409+
adipiscing: Adipiscing, elit: Elit,
410+
);
405411

406-
fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur,
407-
adipiscing: Adipiscing, elit: Elit) {
412+
fn lorem(
413+
ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur,
414+
adipiscing: Adipiscing, elit: Elit,
415+
) {
408416
// body
409417
}
410418
}
@@ -420,16 +428,20 @@ trait Lorem {
420428
// body
421429
}
422430

423-
fn lorem(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur,
424-
adipiscing: Adipiscing, elit: Elit);
425-
426-
fn lorem(ipsum: Ipsum,
427-
dolor: Dolor,
428-
sit: Sit,
429-
amet: Amet,
430-
consectetur: onsectetur,
431-
adipiscing: Adipiscing,
432-
elit: Elit) {
431+
fn lorem(
432+
ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Amet, consectetur: Consectetur,
433+
adipiscing: Adipiscing, elit: Elit,
434+
);
435+
436+
fn lorem(
437+
ipsum: Ipsum,
438+
dolor: Dolor,
439+
sit: Sit,
440+
amet: Amet,
441+
consectetur: onsectetur,
442+
adipiscing: Adipiscing,
443+
elit: Elit,
444+
) {
433445
// body
434446
}
435447
}
@@ -445,21 +457,25 @@ trait Lorem {
445457
// body
446458
}
447459

448-
fn lorem(ipsum: Ipsum,
449-
dolor: Dolor,
450-
sit: Sit,
451-
amet: Amet,
452-
consectetur: onsectetur,
453-
adipiscing: Adipiscing,
454-
elit: Elit);
455-
456-
fn lorem(ipsum: Ipsum,
457-
dolor: Dolor,
458-
sit: Sit,
459-
amet: Amet,
460-
consectetur: onsectetur,
461-
adipiscing: Adipiscing,
462-
elit: Elit) {
460+
fn lorem(
461+
ipsum: Ipsum,
462+
dolor: Dolor,
463+
sit: Sit,
464+
amet: Amet,
465+
consectetur: onsectetur,
466+
adipiscing: Adipiscing,
467+
elit: Elit,
468+
);
469+
470+
fn lorem(
471+
ipsum: Ipsum,
472+
dolor: Dolor,
473+
sit: Sit,
474+
amet: Amet,
475+
consectetur: onsectetur,
476+
adipiscing: Adipiscing,
477+
elit: Elit,
478+
) {
463479
// body
464480
}
465481
}
@@ -560,8 +576,8 @@ fn lorem(
560576
ipsum: Ipsum,
561577
dolor: Dolor,
562578
sit: Sit,
563-
amet: Amet)
564-
-> DolorSitAmetConsecteturAdipiscingElitLoremIpsumDolorSitAmetConsecteturAdipiscingElit {
579+
amet: Amet,
580+
) -> DolorSitAmetConsecteturAdipiscingElitLoremIpsumDolorSitAmetConsecteturAdipiscingElit {
565581
// body
566582
}
567583
```
@@ -570,11 +586,12 @@ fn lorem(
570586

571587
```rust
572588
fn lorem
573-
(ipsum: Ipsum,
574-
dolor: Dolor,
575-
sit: Sit,
576-
amet: Amet)
577-
-> DolorSitAmetConsecteturAdipiscingElitLoremIpsumDolorSitAmetConsecteturAdipiscingElit {
589+
(
590+
ipsum: Ipsum,
591+
dolor: Dolor,
592+
sit: Sit,
593+
amet: Amet,
594+
) -> DolorSitAmetConsecteturAdipiscingElitLoremIpsumDolorSitAmetConsecteturAdipiscingElit {
578595
// body
579596
}
580597
```
@@ -600,7 +617,8 @@ fn lorem(ipsum: usize)
600617
}
601618

602619
fn lorem<T>(ipsum: T)
603-
where T: Add + Sub + Mul + Div
620+
where
621+
T: Add + Sub + Mul + Div,
604622
{
605623
// body
606624
}
@@ -618,7 +636,8 @@ fn lorem(ipsum: usize) {
618636
}
619637

620638
fn lorem<T>(ipsum: T)
621-
where T: Add + Sub + Mul + Div {
639+
where
640+
T: Add + Sub + Mul + Div, {
622641
// body
623642
}
624643
```
@@ -635,7 +654,8 @@ fn lorem(ipsum: usize) {
635654
}
636655

637656
fn lorem<T>(ipsum: T)
638-
where T: Add + Sub + Mul + Div
657+
where
658+
T: Add + Sub + Mul + Div,
639659
{
640660
// body
641661
}
@@ -757,6 +777,8 @@ fn lorem(ipsum: Ipsum,
757777

758778
```
759779

780+
**Note**: This option only takes effect when `fn_call_style` is set to `"Visual"`.
781+
760782
## `fn_single_line`
761783

762784
Put single-expression functions on a single line
@@ -867,14 +889,15 @@ fn lorem<
867889
Adipiscing: Eq = usize,
868890
Consectetur: Eq = usize,
869891
Elit: Eq = usize
870-
>(ipsum: Ipsum,
892+
>(
893+
ipsum: Ipsum,
871894
dolor: Dolor,
872895
sit: Sit,
873896
amet: Amet,
874897
adipiscing: Adipiscing,
875898
consectetur: Consectetur,
876-
elit: Elit)
877-
-> T {
899+
elit: Elit,
900+
) -> T {
878901
// body
879902
}
880903
```
@@ -1844,7 +1867,7 @@ let lorem = ipsum.map(|dolor| dolor.sit())?;
18441867

18451868
## `where_density`
18461869

1847-
Density of a where clause
1870+
Density of a where clause.
18481871

18491872
- **Default value**: `"CompressedIfEmpty"`
18501873
- **Possible values**: `"Compressed"`, `"CompressedIfEmpty"`, `"Tall"`, `"Vertical"`
@@ -1853,9 +1876,11 @@ Density of a where clause
18531876

18541877
```rust
18551878
trait Lorem {
1856-
fn ipsum<Dolor>(dolor: Dolor) -> Sit where Dolor: Eq;
1879+
fn ipsum<Dolor>(dolor: Dolor) -> Sit
1880+
where Dolor: Eq;
18571881

1858-
fn ipsum<Dolor>(dolor: Dolor) -> Sit where Dolor: Eq {
1882+
fn ipsum<Dolor>(dolor: Dolor) -> Sit
1883+
where Dolor: Eq {
18591884
// body
18601885
}
18611886
}
@@ -1865,10 +1890,12 @@ trait Lorem {
18651890

18661891
```rust
18671892
trait Lorem {
1868-
fn ipsum<Dolor>(dolor: Dolor) -> Sit where Dolor: Eq;
1893+
fn ipsum<Dolor>(dolor: Dolor) -> Sit
1894+
where Dolor: Eq;
18691895

18701896
fn ipsum<Dolor>(dolor: Dolor) -> Sit
1871-
where Dolor: Eq
1897+
where
1898+
Dolor: Eq,
18721899
{
18731900
// body
18741901
}
@@ -1880,10 +1907,12 @@ trait Lorem {
18801907
```rust
18811908
trait Lorem {
18821909
fn ipsum<Dolor>(dolor: Dolor) -> Sit
1883-
where Dolor: Eq;
1910+
where
1911+
Dolor: Eq;
18841912

18851913
fn ipsum<Dolor>(dolor: Dolor) -> Sit
1886-
where Dolor: Eq
1914+
where
1915+
Dolor: Eq,
18871916
{
18881917
// body
18891918
}
@@ -1990,6 +2019,8 @@ fn lorem<Ipsum, Dolor, Sit, Amet>(ipsum: Ipsum, dolor: Dolor, sit: Sit, amet: Am
19902019
}
19912020
```
19922021

2022+
**Note**: This option only takes effect when `where_style` is set to `"Legacy"`.
2023+
19932024
See also: [`where_density`](#where_density), [`where_pred_indent`](#where_pred_indent), [`where_style`](#where_style).
19942025

19952026
## `where_pred_indent`
@@ -2025,6 +2056,8 @@ fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
20252056
}
20262057
```
20272058

2059+
**Note**: This option only takes effect when `where_style` is set to `"Legacy"`.
2060+
20282061
See also: [`where_density`](#where_density), [`where_layout`](#where_layout), [`where_style`](#where_style).
20292062

20302063
## `where_style`

src/expr.rs

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ where
394394
1 // "["
395395
};
396396

397-
let mut nested_shape = match context.config.array_layout() {
397+
let nested_shape = match context.config.array_layout() {
398398
IndentStyle::Block => try_opt!(
399399
shape
400400
.block()
@@ -456,19 +456,11 @@ where
456456
DefinitiveListTactic::Mixed
457457
},
458458
};
459-
let mut ends_with_newline = tactic.ends_with_newline(context.config.array_layout());
459+
let ends_with_newline = tactic.ends_with_newline(context.config.array_layout());
460460
if context.config.array_horizontal_layout_threshold() > 0 &&
461461
items.len() > context.config.array_horizontal_layout_threshold()
462462
{
463463
tactic = DefinitiveListTactic::Mixed;
464-
ends_with_newline = false;
465-
if context.config.array_layout() == IndentStyle::Block {
466-
nested_shape = try_opt!(
467-
shape
468-
.visual_indent(bracket_size)
469-
.sub_width(bracket_size * 2)
470-
);
471-
}
472464
}
473465

474466
let fmt = ListFormatting {
@@ -489,7 +481,7 @@ where
489481
let list_str = try_opt!(write_list(&items, &fmt));
490482

491483
let result = if context.config.array_layout() == IndentStyle::Visual ||
492-
tactic != DefinitiveListTactic::Vertical
484+
tactic == DefinitiveListTactic::Horizontal
493485
{
494486
if context.config.spaces_within_square_brackets() && list_str.len() > 0 {
495487
format!("[ {} ]", list_str)

0 commit comments

Comments
 (0)