mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Auto merge of #114901 - compiler-errors:style-guide-wc, r=calebcartwright
Amend style guide section for formatting where clauses in type aliases This PR has two parts: 1. Amend wording about breaking before or after the `=`, which is a style guide bugfix to align it with current rustfmt behavior. 2. Explain how to format trailing (#89122) where clauses, which are preferred in both GATs (#90076) and type aliases (#114662). r? `@joshtriplett`
This commit is contained in:
commit
7b4b1b08b6
@ -367,26 +367,52 @@ where
|
|||||||
## Type aliases
|
## Type aliases
|
||||||
|
|
||||||
Keep type aliases on one line when they fit. If necessary to break the line, do
|
Keep type aliases on one line when they fit. If necessary to break the line, do
|
||||||
so after the `=`, and block-indent the right-hand side:
|
so before the `=`, and block-indent the right-hand side:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
pub type Foo = Bar<T>;
|
pub type Foo = Bar<T>;
|
||||||
|
|
||||||
// If multi-line is required
|
// If multi-line is required
|
||||||
type VeryLongType<T, U: SomeBound> =
|
type VeryLongType<T, U: SomeBound>
|
||||||
AnEvenLongerType<T, U, Foo<T>>;
|
= AnEvenLongerType<T, U, Foo<T>>;
|
||||||
```
|
```
|
||||||
|
|
||||||
Where possible avoid `where` clauses and keep type constraints inline. Where
|
When there is a trailing `where` clause after the type, and no `where` clause
|
||||||
that is not possible split the line before and after the `where` clause (and
|
present before the type, break before the `=` and indent. Then break before the
|
||||||
split the `where` clause as normal), e.g.,
|
`where` keyword and format the clauses normally, e.g.,
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
|
// With only a trailing where clause
|
||||||
type VeryLongType<T, U>
|
type VeryLongType<T, U>
|
||||||
|
= AnEvenLongerType<T, U, Foo<T>>
|
||||||
|
where
|
||||||
|
T: U::AnAssociatedType,
|
||||||
|
U: SomeBound;
|
||||||
|
```
|
||||||
|
|
||||||
|
When there is a `where` clause before the type, format it normally, and break
|
||||||
|
after the last clause. Do not indent before the `=` to leave it visually
|
||||||
|
distinct from the indented clauses that precede it. If there is additionally a
|
||||||
|
`where` clause after the type, break before the `where` keyword and format the
|
||||||
|
clauses normally.
|
||||||
|
|
||||||
|
```rust
|
||||||
|
// With only a preceding where clause.
|
||||||
|
type WithPrecedingWC<T, U>
|
||||||
where
|
where
|
||||||
T: U::AnAssociatedType,
|
T: U::AnAssociatedType,
|
||||||
U: SomeBound,
|
U: SomeBound,
|
||||||
= AnEvenLongerType<T, U, Foo<T>>;
|
= AnEvenLongerType<T, U, Foo<T>>;
|
||||||
|
|
||||||
|
// Or with both a preceding and trailing where clause.
|
||||||
|
type WithPrecedingWC<T, U>
|
||||||
|
where
|
||||||
|
T: U::AnAssociatedType,
|
||||||
|
U: SomeBound,
|
||||||
|
= AnEvenLongerType<T, U, Foo<T>>
|
||||||
|
where
|
||||||
|
T: U::AnAssociatedType2,
|
||||||
|
U: SomeBound2;
|
||||||
```
|
```
|
||||||
|
|
||||||
## Associated types
|
## Associated types
|
||||||
|
Loading…
Reference in New Issue
Block a user