Misformatting: excessive indentation due to `dyn` in type alias
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 7k
- Forks
- 1.1k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 24
Description
I have some pretty complicated type aliases to hide away type complexity (boxed dyn Futures with generics).
Rustfmt formats them like this:
pub type AccountVerifyFuture<D, A> = Pin<
Box<
dyn Future<
Output = Result<
VerifySuccess,
VerifyError<<D as AccountData>::Error, <A as AccountVerifier<D>>::Error>,
>,
> + Send,
>,
>;
pub type GameExtrasProcessFuture<G> = Pin<
Box<
dyn Future<
Output = Result<
(),
GameError<
<<G as GameExtrasHandler>::Data as GameExtras>::Error,
<G as GameExtrasHandler>::Error,
>,
>,
> + Send,
>,
>;
Notice how the presence of the dyn keyword caused everything to be indented further in, by an additional 4 spaces (closing > aligns with Future).
I'd expect the above code to be formated like this:
pub type AccountVerifyFuture<D, A> = Pin<
Box<
dyn Future<
Output = Result<
VerifySuccess,
VerifyError<<D as AccountData>::Error, <A as AccountVerifier<D>>::Error>,
>,
> + Send,
>,
>;
pub type GameExtrasProcessFuture<G> = Pin<
Box<
dyn Future<
Output = Result<
(),
GameError<
<<G as GameExtrasHandler>::Data as GameExtras>::Error,
<G as GameExtrasHandler>::Error,
>,
>,
> + Send,
>,
>;
Note how the closing > now aligns with the dyn, and there is no excessive indentation of everything inside the Future.
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
Reproduce the two type-alias examples from the issue with rustfmt, then trace the formatting path for dyn and nested generic bounds. Done means the output matches the expected indentation without the extra four-space shift.
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
- 35/100