Skip to content

Commit

Permalink
Merge pull request #341 from joshtriplett/rustfmt-assignment-operator…
Browse files Browse the repository at this point in the history
…-rhs-indentation

2024: Assignment operator RHS indentation
  • Loading branch information
traviscross authored Dec 4, 2024
2 parents 7a957fa + fe5d589 commit 4efbefa
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
- [Rustdoc nested `include!` change](rust-2024/rustdoc-nested-includes.md)
- [Rustfmt](rust-2024/rustfmt.md)
- [Rustfmt: Style edition](rust-2024/rustfmt-style-edition.md)
- [Rustfmt: Assignment operator RHS indentation](rust-2024/rustfmt-assignment-operator-rhs-indentation.md)
- [Rustfmt: Combine all delimited exprs as last argument](rust-2024/rustfmt-overflow-delimited-expr.md)
- [Rustfmt: Single-line `where` clauses](rust-2024/rustfmt-single-line-where-clauses.md)
- [Rustfmt: Raw identifier sorting](rust-2024/rustfmt-raw-identifier-sorting.md)
Expand Down
59 changes: 59 additions & 0 deletions src/rust-2024/rustfmt-assignment-operator-rhs-indentation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Rustfmt: Assignment operator RHS indentation

## Summary

In the 2024 Edition, `rustfmt` now indents the right-hand side of an assignment operator relative to the last line of the left-hand side, providing a clearer delineation and making it easier to notice the assignment operator.

## Details

In Rust 2021 and before, if an assignment operator has a multi-line left-hand side, the indentation of the right-hand side will visually run together with the left-hand side:

```rust,ignore
impl SomeType {
fn method(&mut self) {
self.array[array_index as usize]
.as_mut()
.expect("thing must exist")
.extra_info =
long_long_long_long_long_long_long_long_long_long_long_long_long_long_long;
self.array[array_index as usize]
.as_mut()
.expect("thing must exist")
.extra_info = Some(ExtraInfo {
parent,
count: count as u16,
children: children.into_boxed_slice(),
});
}
}
```

In the 2024 Edition, `rustfmt` now indents the right-hand side relative to the last line of the left-hand side:

```rust,ignore
impl SomeType {
fn method(&mut self) {
self.array[array_index as usize]
.as_mut()
.expect("thing must exist")
.extra_info =
long_long_long_long_long_long_long_long_long_long_long_long_long_long_long;
self.array[array_index as usize]
.as_mut()
.expect("thing must exist")
.extra_info = Some(ExtraInfo {
parent,
count: count as u16,
children: children.into_boxed_slice(),
});
}
}
```

## Migration

The change can be applied automatically by running `cargo fmt` or `rustfmt` with the 2024 Edition. See the [Style edition] chapter for more information on migrating and how style editions work.

[Style edition]: rustfmt-style-edition.md

0 comments on commit 4efbefa

Please sign in to comment.