Module rustfmt_nightly::chains

source ·
Expand description

Formatting of chained expressions, i.e., expressions that are chained by dots: struct and enum field access, method calls, and try shorthand (?).

Instead of walking these subexpressions one-by-one, as is our usual strategy for expression formatting, we collect maximal sequences of these expressions and handle them simultaneously.

Whenever possible, the entire chain is put on a single line. If that fails, we put each subexpression on a separate, much like the (default) function argument function argument strategy.

Depends on config options: chain_indent is the indent to use for blocks in the parent/root/base of the chain (and the rest of the chain’s alignment). E.g., let foo = { aaaa; bbb; ccc }.bar.baz();, we would layout for the following values of chain_indent: Block:

let foo = {
    aaaa;
    bbb;
    ccc
}.bar
    .baz();

Visual:

let foo = {
              aaaa;
              bbb;
              ccc
          }
          .bar
          .baz();

If the first item in the chain is a block expression, we align the dots with the braces. Block:

let a = foo.bar
    .baz()
    .qux

Visual:

let a = foo.bar
           .baz()
           .qux

Structs

Enums

Traits

Functions

trim_tries 🔒
Removes try operators (?s) that appear in the given string. If removing them leaves an empty line, remove that line as well unless it is the first line (we need the first newline for detecting pre/post comment).