rust-lang / rust-lang/rustfmt

inconsistent imports sorting when merging imports

Open
#6,830 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

C-bug I-unexpected-motion S-has-mcve SO-reorder_imports X-impacts-stable-default-format X-impacts-stable-formatted-code X-impacts-stable-options
Dominant language
Rust
Stars
7k
Forks
1.1k
Avg merge
2d 13h
Merged PRs (30d)
24

Description

Summary

I had this code:

use super::Enum;
use super::Struct;
use super::module::Trait;

Then I merged the imports on the first two lines into this:

use super::{Enum, Struct};
use super::module::Trait;

rustfmt then swapped the lines:

use super::module::Trait;
use super::{Enum, Struct};
Expected behavior

I expected to see this happen: imports of items from super stay at the top

Actual behavior

Instead, this happened: imports from super::module get sorted above items from super

Configuration

rustfmt cli options used (if applicable):

$ rustfmt main.rs --edition 2024

rustfmt configuration file (e.g. rustfmt.toml, if applicable): n/a

Reproduction Steps

See summary

Meta

rustfmt --version:

rustfmt 1.8.0-stable (4a4ef493e3 2026-03-02)

It can be more cleary seen with this code:

use super::CONSTANT;
use super::module::Trait;
use super::{Enum, Struct};

The merged imports are put below use super::module ..., normal imports like use super::CONSTANT here is correctly put at the top.

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

Start by reproducing the behavior with the imports shown in main.rs and the rustfmt CLI command using --edition 2024. Trace the import-sorting path, then verify that merged imports from super remain above imports from super::module while other super imports retain their ordering.

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
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.