rust-lang / rust-lang/rust

Compiler allows marker trait bounds to be omitted in implementations when using RPITIT

Open
#151,433 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-auto-traits A-impl-trait C-bug T-compiler T-types
Dominant language
Rust
Stars
119k
Forks
16.1k
PR merge metrics
PR metrics pending

Description

I tried this code:

pub trait Example {
    fn test() -> impl Eq + Ord + Send;
}

impl Example for u8 {
    fn test() -> impl Eq + Ord {
        "example"
    }
}

I expected an error or at least a warning, but the code compiled with no diagnostics. Omitting Eq or Ord from the implementing function does produce an error.

Meta

Tested with both stable (1.92) and nightly (2026-01-19) in the Playground.

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 with the Rust Playground reproducer showing an RPITIT implementation omitting the Send bound, and compare its behavior on stable 1.92 and nightly 2026-01-19. Trace the compiler's handling of marker trait bounds in this case, then add coverage so the omission produces the intended diagnostic while valid implementations remain accepted.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.