rust-lang / rust-lang/rustfmt

Break lines for attributes in otherwise vertical display (argument / type attributes)

Open
#5,831 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

C-feature-request P-low
Dominant language
Rust
Stars
7k
Forks
1.1k
Avg merge
2d 13h
Merged PRs (30d)
24

Description

This seems like the sort of thing that may have an issue that's just difficult to find, so please point me in the right direction if so.

Currently rustfmt seems to not break lines for attributes in the arguments or generics position:

pub struct Arc<
    T: ?Sized,
    #[unstable(feature = "allocator_api", issue = "32838")] A: Allocator = Global,
> {
    ptr: NonNull<ArcInner<T>>,
    phantom: PhantomData<ArcInner<T>>,
    alloc: A,
}

It seems more consistent to break the line after the attribute. This keeps the generics in line, and is more similar to current behavior for block-level attributes.

pub struct Arc<
    T: ?Sized,
    #[unstable(feature = "allocator_api", issue = "32838")]
    A: Allocator = Global,
> {
    // ...
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the formatting with the Rust snippet, then trace rustfmt's handling of attributes in generic arguments and type parameters. No source file or test is named; done means the formatter breaks after the attribute while preserving the surrounding vertical generic layout, with coverage in the relevant formatter tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
tooling
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.