style-guide: Expand documentation on as casts (mostly like a binary operator)
`as` casts currently get formatted like a binary operator, except that the second line can stack several `as` casts rather than breaking them each onto their own line. Merge `as` into a subsection of the binary operators section, and then go into detail on the one difference between `as` formatting and binary operator formatting.
This commit is contained in:
parent
736ef39a84
commit
42fa7df38c
1 changed files with 20 additions and 8 deletions
|
|
@ -328,6 +328,26 @@ foo_bar
|
|||
Prefer line-breaking at an assignment operator (either `=` or `+=`, etc.) rather
|
||||
than at other binary operators.
|
||||
|
||||
### Casts (`as`)
|
||||
|
||||
Format `as` casts like a binary operator. In particular, always include spaces
|
||||
around `as`, and if line-breaking, break before the `as` (never after) and
|
||||
block-indent the subsequent line. Format the type on the right-hand side using
|
||||
the rules for types.
|
||||
|
||||
However, unlike with other binary operators, if chaining a series of `as` casts
|
||||
that require line-breaking, and line-breaking before the first `as` suffices to
|
||||
make the remainder fit on the next line, don't break before any subsequent
|
||||
`as`; instead, leave the series of types all on the same line:
|
||||
|
||||
```rust
|
||||
let cstr = very_long_expression()
|
||||
as *const str as *const [u8] as *const std::os::raw::c_char;
|
||||
```
|
||||
|
||||
If the subsequent line still requires line-breaking, break and block-indent
|
||||
before each `as` as with other binary operators.
|
||||
|
||||
## Control flow
|
||||
|
||||
Do not include extraneous parentheses for `if` and `while` expressions.
|
||||
|
|
@ -421,14 +441,6 @@ assert_eq!(
|
|||
);
|
||||
```
|
||||
|
||||
## Casts (`as`)
|
||||
|
||||
Put spaces before and after `as`:
|
||||
|
||||
```rust
|
||||
let cstr = "Hi\0" as *const str as *const [u8] as *const std::os::raw::c_char;
|
||||
```
|
||||
|
||||
## Chains of fields and method calls
|
||||
|
||||
A chain is a sequence of field accesses, method calls, and/or uses of the try
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue