@@ -295,8 +295,18 @@ Prefer to use single-letter names for generic parameters.
295
295
296
296
These rules apply for `where ` clauses on any item .
297
297
298
- If immediately following a closing bracket of any kind , write the keyword
299
- `where ` on the same line , with a space before it .
298
+ If a where clause is short , and appears on a short one - line function
299
+ declaration with no body or on a short type with no `= `, format it on
300
+ the same line as the declaration :
301
+
302
+ ```rust
303
+ fn new (& self ) -> Self where Self : Sized ;
304
+
305
+ type Item <'a >: SomeTrait where Self : 'a ;
306
+ ```
307
+
308
+ Otherwise, if immediately following a closing bracket of any kind, write the
309
+ keyword ` where ` on the same line, with a space before it.
300
310
301
311
Otherwise, put ` where ` on a new line at the same indentation level. Put each
302
312
component of a ` where ` clause on its own line, block-indented. Use a trailing
@@ -347,7 +357,7 @@ where
347
357
```
348
358
349
359
If a ` where ` clause is very short, prefer using an inline bound on the type
350
- parameter.
360
+ parameter if possible .
351
361
352
362
If a component of a ` where ` clause does not fit and contains ` + ` , break it
353
363
before each ` + ` and block-indent the continuation lines. Put each bound on its
@@ -421,9 +431,21 @@ Format associated types like type aliases. Where an associated type has a
421
431
bound, put a space after the colon but not before:
422
432
423
433
``` rust
424
- pub type Foo : Bar ;
434
+ type Foo : Bar ;
425
435
```
426
436
437
+ If an associated type is short, has no ` = ` , and has a ` where ` clause with only
438
+ one entry, format the entire type declaration including the ` where ` clause on
439
+ the same line if it fits:
440
+
441
+ ``` rust
442
+ type Item <'a > where Self : 'a ;
443
+ type Item <'a >: PartialEq + Send where Self : 'a ;
444
+ ```
445
+
446
+ If the associated type has a ` = ` , or if the ` where ` clause contains multiple
447
+ entries, format it across multiple lines as with a type alias.
448
+
427
449
## extern items
428
450
429
451
When writing extern items (such as ` extern "C" fn ` ), always specify the ABI.
0 commit comments