rust-lang / rust-lang/reference

Document association of generic arguments in path segments

Open
#2,275 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-generics
Dominant language
Rust
Stars
1.6k
Forks
607
PR merge metrics
PR metrics pending

Description

There are some subtle behaviors around where generic arguments can appear in a path, particularly with enum variants. For example:

enum E<T> {
    V1 { x: T },
}

fn main() {
    // These seem to be the same.
    E::V1::<i32> { x: 1 };
    E::<i32>::V1 { x: 1 };
}

Are these exactly the same? I'm wondering if there are other oddities like this? This came up when looking at https://github.com/rust-lang/rust/pull/154971.

https://github.com/rust-lang/reference/pull/2165 is adding more documentation on generic arguments and how they are associated, but I don't think it covers this.

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 comparing the two enum-variant expressions in the issue and review the generic-argument material proposed in Rust Reference PR 2165, along with the related Rust PR 154971. Determine whether the forms are equivalent and identify other path-segment cases; done means documenting the confirmed association rules and examples in the Reference.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
documentation
Issue type
Documentation
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.