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
- Chain 🔒
Enums
Traits
Functions
- Provides the original input contents from the span of a chain element with trailing spaces trimmed.
- 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).