Bad formatting with closures
Open
Nobody has claimed this yet.
A-closures
I-poor-formatting
- Dominant language
- Rust
- Stars
- 7k
- Forks
- 1.1k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 24
Description
Formatting the following code produces awful results:
fn main() {
{
{
{
let result = this_is_a_quite_long_name(
another_long_one,
&|from, to| -> LongResult<Words> {
() // this comment is to keep it from collapsing
}
)?;
}
}
}
}
it's formatted into this:
fn main() {
{
{
{
let result = this_is_a_quite_long_name(another_long_one, &|from,
to|
-> LongResult<
Words,
> {
() // this comment is to keep it from collapsing
})?;
}
}
}
}
playground: link
I can ignore it by using #[rustfmt::skip] but this behavior seems incorrect.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Rust playground reproduction linked in the issue and trace the formatter behavior for closures inside a long function call. Compare the current output with the reported input; done means this example is formatted without the closure signature being split and indented incorrectly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100