Add basic splat support to rustdoc - #160882

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis
Aug 12, 2026
Merged

Add basic splat support to rustdoc#160882
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis

Conversation

@bushrat011899

@bushrat011899bushrat011899 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Tracking Issue: #153629

Description

While experimenting on variadic min/max, it was noted that the rustdoc output for a splatted function is less than ideal. Consider the below:

pubfnsmallest<T:Ord>(#[rustc_splat]vals:implTupleReduce<Item = T>) -> T{// ...}

Currently, this is rendered in rustdoc as-is, obfuscating the variadic nature of the function:

image

Solution

I've updated the clean Parameter type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.

image

Notes

  • No AI tooling of any kind was used during the creation of this PR.

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Aug 10, 2026
@rustbot

Copy link
Copy Markdown
Collaborator

r? @GuillaumeGomez

rustbot has assigned @GuillaumeGomez.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: rustdoc
  • rustdoc expanded to 8 candidates
  • Random selection from GuillaumeGomez, lolbinarycat, notriddle

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@rustbot label F-splat

@rustbotrustbot added the F-splat `#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629 label Aug 10, 2026
@GuillaumeGomez

Copy link
Copy Markdown
Member

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

Done! Sorry I should've included that initially, haven't contributed to rustdoc before! I swapped the with args to confirm the test fails as well.

Comment threadtests/rustdoc-html/splat-variadic-ellipsis.rs
@notriddle

Copy link
Copy Markdown
Contributor

r? @GuillaumeGomez

@rustbot

Copy link
Copy Markdown
Collaborator

Requested reviewer is already assigned to this pull request.

Please choose another assignee.

Simply replace the parameter name and `#[rustc_splat]` attribute with an ellipsis. This preserves the type information of the splat while still documenting the variadic nature of the function.
@GuillaumeGomez

Copy link
Copy Markdown
Member

Looks good to me, thanks! r=me once CI pass.

@bors delegate+

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

✌️ @bushrat011899, you can now approve this pull request!

If @GuillaumeGomez told you to "r=me" after making some further change, then please make that change and post @bors r=GuillaumeGomez.

View changes since this delegation.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@bors r=GuillaumeGomez

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 413fdca has been approved by GuillaumeGomez

It is now in the queue for this repository.

@rust-borsrust-borsBot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 11, 2026
@jhprattjhpratt mentioned this pull request Aug 12, 2026
rust-borsBot pushed a commit that referenced this pull request Aug 12, 2026
Rollup of 14 pull requests
Successful merges:
- #160620 (Do not pass `-no-pie` on Windows)
- #160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- #160854 (Add -Zwasm-proc-macros flag)
- #160868 (std: Adjust cfgs again for TLS on WASI)
- #160882 (Add basic `splat` support to `rustdoc`)
- #160894 (Allow running an arbitrary number of try jobs per PR)
- #160790 (rustc-book: update sys-v abi link)
- #160878 (Add rust_analyzer to check-cfg names)
- #160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- #160920 (No longer mention the removed generic)
- #160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- #160924 (split up `rustc_session`)
- #160934 (Ensure TLS accesses don't call the global allocator through panic)
- #160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
@rust-bors
rust-borsBot merged commit 7718d14 into rust-lang:mainAug 12, 2026
13 checks passed
@rustbotrustbot added this to the 1.99.0 milestone Aug 12, 2026
rust-timer added a commit that referenced this pull request Aug 12, 2026
Rollup merge of #160882 - bushrat011899:rustdoc_splat_ellipsis, r=GuillaumeGomez
Add basic `splat` support to `rustdoc`
Tracking Issue: #153629
# Description
While experimenting on variadic `min`/`max`, it was [noted](rust-lang/libs-team#848 (comment)) that the `rustdoc` output for a splatted function is less than ideal. Consider the below:
```rust
pub fn smallest<T: Ord>(#[rustc_splat] vals: impl TupleReduce<Item = T>) -> T {
// ...
}
```
Currently, this is rendered in `rustdoc` as-is, obfuscating the variadic nature of the function:
<img width="819" height="211" alt="image" src="https://github.com/user-attachments/assets/68569fe6-7285-49f8-aae9-ddad0b10649c" />
## Solution
I've updated the clean `Parameter` type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.
<img width="820" height="211" alt="image" src="https://github.com/user-attachments/assets/58a27245-cc38-44e6-908a-f67991bcdb64" />
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
flip1995 pushed a commit to flip1995/rust-clippy that referenced this pull request Aug 17, 2026
Rollup of 14 pull requests
Successful merges:
- rust-lang/rust#160620 (Do not pass `-no-pie` on Windows)
- rust-lang/rust#160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- rust-lang/rust#160854 (Add -Zwasm-proc-macros flag)
- rust-lang/rust#160868 (std: Adjust cfgs again for TLS on WASI)
- rust-lang/rust#160882 (Add basic `splat` support to `rustdoc`)
- rust-lang/rust#160894 (Allow running an arbitrary number of try jobs per PR)
- rust-lang/rust#160790 (rustc-book: update sys-v abi link)
- rust-lang/rust#160878 (Add rust_analyzer to check-cfg names)
- rust-lang/rust#160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- rust-lang/rust#160920 (No longer mention the removed generic)
- rust-lang/rust#160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- rust-lang/rust#160924 (split up `rustc_session`)
- rust-lang/rust#160934 (Ensure TLS accesses don't call the global allocator through panic)
- rust-lang/rust#160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

F-splat`#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@bushrat011899@rustbot@GuillaumeGomez@notriddle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add basic splat support to rustdoc - #160882

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis
Aug 12, 2026
Merged

Add basic splat support to rustdoc#160882
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis

Conversation

@bushrat011899

@bushrat011899bushrat011899 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Tracking Issue: #153629

Description

While experimenting on variadic min/max, it was noted that the rustdoc output for a splatted function is less than ideal. Consider the below:

pubfnsmallest<T:Ord>(#[rustc_splat]vals:implTupleReduce<Item = T>) -> T{// ...}

Currently, this is rendered in rustdoc as-is, obfuscating the variadic nature of the function:

image

Solution

I've updated the clean Parameter type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.

image

Notes

  • No AI tooling of any kind was used during the creation of this PR.

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Aug 10, 2026
@rustbot

Copy link
Copy Markdown
Collaborator

r? @GuillaumeGomez

rustbot has assigned @GuillaumeGomez.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: rustdoc
  • rustdoc expanded to 8 candidates
  • Random selection from GuillaumeGomez, lolbinarycat, notriddle

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@rustbot label F-splat

@rustbotrustbot added the F-splat `#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629 label Aug 10, 2026
@GuillaumeGomez

Copy link
Copy Markdown
Member

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

Done! Sorry I should've included that initially, haven't contributed to rustdoc before! I swapped the with args to confirm the test fails as well.

Comment threadtests/rustdoc-html/splat-variadic-ellipsis.rs
@notriddle

Copy link
Copy Markdown
Contributor

r? @GuillaumeGomez

@rustbot

Copy link
Copy Markdown
Collaborator

Requested reviewer is already assigned to this pull request.

Please choose another assignee.

Simply replace the parameter name and `#[rustc_splat]` attribute with an ellipsis. This preserves the type information of the splat while still documenting the variadic nature of the function.
@GuillaumeGomez

Copy link
Copy Markdown
Member

Looks good to me, thanks! r=me once CI pass.

@bors delegate+

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

✌️ @bushrat011899, you can now approve this pull request!

If @GuillaumeGomez told you to "r=me" after making some further change, then please make that change and post @bors r=GuillaumeGomez.

View changes since this delegation.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@bors r=GuillaumeGomez

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 413fdca has been approved by GuillaumeGomez

It is now in the queue for this repository.

@rust-borsrust-borsBot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 11, 2026
@jhprattjhpratt mentioned this pull request Aug 12, 2026
rust-borsBot pushed a commit that referenced this pull request Aug 12, 2026
Rollup of 14 pull requests
Successful merges:
- #160620 (Do not pass `-no-pie` on Windows)
- #160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- #160854 (Add -Zwasm-proc-macros flag)
- #160868 (std: Adjust cfgs again for TLS on WASI)
- #160882 (Add basic `splat` support to `rustdoc`)
- #160894 (Allow running an arbitrary number of try jobs per PR)
- #160790 (rustc-book: update sys-v abi link)
- #160878 (Add rust_analyzer to check-cfg names)
- #160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- #160920 (No longer mention the removed generic)
- #160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- #160924 (split up `rustc_session`)
- #160934 (Ensure TLS accesses don't call the global allocator through panic)
- #160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
@rust-bors
rust-borsBot merged commit 7718d14 into rust-lang:mainAug 12, 2026
13 checks passed
@rustbotrustbot added this to the 1.99.0 milestone Aug 12, 2026
rust-timer added a commit that referenced this pull request Aug 12, 2026
Rollup merge of #160882 - bushrat011899:rustdoc_splat_ellipsis, r=GuillaumeGomez
Add basic `splat` support to `rustdoc`
Tracking Issue: #153629
# Description
While experimenting on variadic `min`/`max`, it was [noted](rust-lang/libs-team#848 (comment)) that the `rustdoc` output for a splatted function is less than ideal. Consider the below:
```rust
pub fn smallest<T: Ord>(#[rustc_splat] vals: impl TupleReduce<Item = T>) -> T {
// ...
}
```
Currently, this is rendered in `rustdoc` as-is, obfuscating the variadic nature of the function:
<img width="819" height="211" alt="image" src="https://github.com/user-attachments/assets/68569fe6-7285-49f8-aae9-ddad0b10649c" />
## Solution
I've updated the clean `Parameter` type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.
<img width="820" height="211" alt="image" src="https://github.com/user-attachments/assets/58a27245-cc38-44e6-908a-f67991bcdb64" />
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
flip1995 pushed a commit to flip1995/rust-clippy that referenced this pull request Aug 17, 2026
Rollup of 14 pull requests
Successful merges:
- rust-lang/rust#160620 (Do not pass `-no-pie` on Windows)
- rust-lang/rust#160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- rust-lang/rust#160854 (Add -Zwasm-proc-macros flag)
- rust-lang/rust#160868 (std: Adjust cfgs again for TLS on WASI)
- rust-lang/rust#160882 (Add basic `splat` support to `rustdoc`)
- rust-lang/rust#160894 (Allow running an arbitrary number of try jobs per PR)
- rust-lang/rust#160790 (rustc-book: update sys-v abi link)
- rust-lang/rust#160878 (Add rust_analyzer to check-cfg names)
- rust-lang/rust#160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- rust-lang/rust#160920 (No longer mention the removed generic)
- rust-lang/rust#160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- rust-lang/rust#160924 (split up `rustc_session`)
- rust-lang/rust#160934 (Ensure TLS accesses don't call the global allocator through panic)
- rust-lang/rust#160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

F-splat`#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@bushrat011899@rustbot@GuillaumeGomez@notriddle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add basic splat support to rustdoc - #160882

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis
Aug 12, 2026
Merged

Add basic splat support to rustdoc#160882
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis

Conversation

@bushrat011899

@bushrat011899bushrat011899 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Tracking Issue: #153629

Description

While experimenting on variadic min/max, it was noted that the rustdoc output for a splatted function is less than ideal. Consider the below:

pubfnsmallest<T:Ord>(#[rustc_splat]vals:implTupleReduce<Item = T>) -> T{// ...}

Currently, this is rendered in rustdoc as-is, obfuscating the variadic nature of the function:

image

Solution

I've updated the clean Parameter type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.

image

Notes

  • No AI tooling of any kind was used during the creation of this PR.

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Aug 10, 2026
@rustbot

Copy link
Copy Markdown
Collaborator

r? @GuillaumeGomez

rustbot has assigned @GuillaumeGomez.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: rustdoc
  • rustdoc expanded to 8 candidates
  • Random selection from GuillaumeGomez, lolbinarycat, notriddle

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@rustbot label F-splat

@rustbotrustbot added the F-splat `#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629 label Aug 10, 2026
@GuillaumeGomez

Copy link
Copy Markdown
Member

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

Done! Sorry I should've included that initially, haven't contributed to rustdoc before! I swapped the with args to confirm the test fails as well.

Comment threadtests/rustdoc-html/splat-variadic-ellipsis.rs
@notriddle

Copy link
Copy Markdown
Contributor

r? @GuillaumeGomez

@rustbot

Copy link
Copy Markdown
Collaborator

Requested reviewer is already assigned to this pull request.

Please choose another assignee.

Simply replace the parameter name and `#[rustc_splat]` attribute with an ellipsis. This preserves the type information of the splat while still documenting the variadic nature of the function.
@GuillaumeGomez

Copy link
Copy Markdown
Member

Looks good to me, thanks! r=me once CI pass.

@bors delegate+

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

✌️ @bushrat011899, you can now approve this pull request!

If @GuillaumeGomez told you to "r=me" after making some further change, then please make that change and post @bors r=GuillaumeGomez.

View changes since this delegation.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@bors r=GuillaumeGomez

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 413fdca has been approved by GuillaumeGomez

It is now in the queue for this repository.

@rust-borsrust-borsBot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 11, 2026
@jhprattjhpratt mentioned this pull request Aug 12, 2026
rust-borsBot pushed a commit that referenced this pull request Aug 12, 2026
Rollup of 14 pull requests
Successful merges:
- #160620 (Do not pass `-no-pie` on Windows)
- #160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- #160854 (Add -Zwasm-proc-macros flag)
- #160868 (std: Adjust cfgs again for TLS on WASI)
- #160882 (Add basic `splat` support to `rustdoc`)
- #160894 (Allow running an arbitrary number of try jobs per PR)
- #160790 (rustc-book: update sys-v abi link)
- #160878 (Add rust_analyzer to check-cfg names)
- #160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- #160920 (No longer mention the removed generic)
- #160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- #160924 (split up `rustc_session`)
- #160934 (Ensure TLS accesses don't call the global allocator through panic)
- #160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
@rust-bors
rust-borsBot merged commit 7718d14 into rust-lang:mainAug 12, 2026
13 checks passed
@rustbotrustbot added this to the 1.99.0 milestone Aug 12, 2026
rust-timer added a commit that referenced this pull request Aug 12, 2026
Rollup merge of #160882 - bushrat011899:rustdoc_splat_ellipsis, r=GuillaumeGomez
Add basic `splat` support to `rustdoc`
Tracking Issue: #153629
# Description
While experimenting on variadic `min`/`max`, it was [noted](rust-lang/libs-team#848 (comment)) that the `rustdoc` output for a splatted function is less than ideal. Consider the below:
```rust
pub fn smallest<T: Ord>(#[rustc_splat] vals: impl TupleReduce<Item = T>) -> T {
// ...
}
```
Currently, this is rendered in `rustdoc` as-is, obfuscating the variadic nature of the function:
<img width="819" height="211" alt="image" src="https://github.com/user-attachments/assets/68569fe6-7285-49f8-aae9-ddad0b10649c" />
## Solution
I've updated the clean `Parameter` type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.
<img width="820" height="211" alt="image" src="https://github.com/user-attachments/assets/58a27245-cc38-44e6-908a-f67991bcdb64" />
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
flip1995 pushed a commit to flip1995/rust-clippy that referenced this pull request Aug 17, 2026
Rollup of 14 pull requests
Successful merges:
- rust-lang/rust#160620 (Do not pass `-no-pie` on Windows)
- rust-lang/rust#160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- rust-lang/rust#160854 (Add -Zwasm-proc-macros flag)
- rust-lang/rust#160868 (std: Adjust cfgs again for TLS on WASI)
- rust-lang/rust#160882 (Add basic `splat` support to `rustdoc`)
- rust-lang/rust#160894 (Allow running an arbitrary number of try jobs per PR)
- rust-lang/rust#160790 (rustc-book: update sys-v abi link)
- rust-lang/rust#160878 (Add rust_analyzer to check-cfg names)
- rust-lang/rust#160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- rust-lang/rust#160920 (No longer mention the removed generic)
- rust-lang/rust#160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- rust-lang/rust#160924 (split up `rustc_session`)
- rust-lang/rust#160934 (Ensure TLS accesses don't call the global allocator through panic)
- rust-lang/rust#160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

F-splat`#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@bushrat011899@rustbot@GuillaumeGomez@notriddle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add basic splat support to rustdoc - #160882

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis
Aug 12, 2026
Merged

Add basic splat support to rustdoc#160882
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis

Conversation

@bushrat011899

@bushrat011899bushrat011899 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Tracking Issue: #153629

Description

While experimenting on variadic min/max, it was noted that the rustdoc output for a splatted function is less than ideal. Consider the below:

pubfnsmallest<T:Ord>(#[rustc_splat]vals:implTupleReduce<Item = T>) -> T{// ...}

Currently, this is rendered in rustdoc as-is, obfuscating the variadic nature of the function:

image

Solution

I've updated the clean Parameter type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.

image

Notes

  • No AI tooling of any kind was used during the creation of this PR.

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Aug 10, 2026
@rustbot

Copy link
Copy Markdown
Collaborator

r? @GuillaumeGomez

rustbot has assigned @GuillaumeGomez.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: rustdoc
  • rustdoc expanded to 8 candidates
  • Random selection from GuillaumeGomez, lolbinarycat, notriddle

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@rustbot label F-splat

@rustbotrustbot added the F-splat `#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629 label Aug 10, 2026
@GuillaumeGomez

Copy link
Copy Markdown
Member

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

Done! Sorry I should've included that initially, haven't contributed to rustdoc before! I swapped the with args to confirm the test fails as well.

Comment threadtests/rustdoc-html/splat-variadic-ellipsis.rs
@notriddle

Copy link
Copy Markdown
Contributor

r? @GuillaumeGomez

@rustbot

Copy link
Copy Markdown
Collaborator

Requested reviewer is already assigned to this pull request.

Please choose another assignee.

Simply replace the parameter name and `#[rustc_splat]` attribute with an ellipsis. This preserves the type information of the splat while still documenting the variadic nature of the function.
@GuillaumeGomez

Copy link
Copy Markdown
Member

Looks good to me, thanks! r=me once CI pass.

@bors delegate+

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

✌️ @bushrat011899, you can now approve this pull request!

If @GuillaumeGomez told you to "r=me" after making some further change, then please make that change and post @bors r=GuillaumeGomez.

View changes since this delegation.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@bors r=GuillaumeGomez

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 413fdca has been approved by GuillaumeGomez

It is now in the queue for this repository.

@rust-borsrust-borsBot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 11, 2026
@jhprattjhpratt mentioned this pull request Aug 12, 2026
rust-borsBot pushed a commit that referenced this pull request Aug 12, 2026
Rollup of 14 pull requests
Successful merges:
- #160620 (Do not pass `-no-pie` on Windows)
- #160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- #160854 (Add -Zwasm-proc-macros flag)
- #160868 (std: Adjust cfgs again for TLS on WASI)
- #160882 (Add basic `splat` support to `rustdoc`)
- #160894 (Allow running an arbitrary number of try jobs per PR)
- #160790 (rustc-book: update sys-v abi link)
- #160878 (Add rust_analyzer to check-cfg names)
- #160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- #160920 (No longer mention the removed generic)
- #160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- #160924 (split up `rustc_session`)
- #160934 (Ensure TLS accesses don't call the global allocator through panic)
- #160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
@rust-bors
rust-borsBot merged commit 7718d14 into rust-lang:mainAug 12, 2026
13 checks passed
@rustbotrustbot added this to the 1.99.0 milestone Aug 12, 2026
rust-timer added a commit that referenced this pull request Aug 12, 2026
Rollup merge of #160882 - bushrat011899:rustdoc_splat_ellipsis, r=GuillaumeGomez
Add basic `splat` support to `rustdoc`
Tracking Issue: #153629
# Description
While experimenting on variadic `min`/`max`, it was [noted](rust-lang/libs-team#848 (comment)) that the `rustdoc` output for a splatted function is less than ideal. Consider the below:
```rust
pub fn smallest<T: Ord>(#[rustc_splat] vals: impl TupleReduce<Item = T>) -> T {
// ...
}
```
Currently, this is rendered in `rustdoc` as-is, obfuscating the variadic nature of the function:
<img width="819" height="211" alt="image" src="https://github.com/user-attachments/assets/68569fe6-7285-49f8-aae9-ddad0b10649c" />
## Solution
I've updated the clean `Parameter` type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.
<img width="820" height="211" alt="image" src="https://github.com/user-attachments/assets/58a27245-cc38-44e6-908a-f67991bcdb64" />
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
flip1995 pushed a commit to flip1995/rust-clippy that referenced this pull request Aug 17, 2026
Rollup of 14 pull requests
Successful merges:
- rust-lang/rust#160620 (Do not pass `-no-pie` on Windows)
- rust-lang/rust#160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- rust-lang/rust#160854 (Add -Zwasm-proc-macros flag)
- rust-lang/rust#160868 (std: Adjust cfgs again for TLS on WASI)
- rust-lang/rust#160882 (Add basic `splat` support to `rustdoc`)
- rust-lang/rust#160894 (Allow running an arbitrary number of try jobs per PR)
- rust-lang/rust#160790 (rustc-book: update sys-v abi link)
- rust-lang/rust#160878 (Add rust_analyzer to check-cfg names)
- rust-lang/rust#160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- rust-lang/rust#160920 (No longer mention the removed generic)
- rust-lang/rust#160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- rust-lang/rust#160924 (split up `rustc_session`)
- rust-lang/rust#160934 (Ensure TLS accesses don't call the global allocator through panic)
- rust-lang/rust#160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

F-splat`#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@bushrat011899@rustbot@GuillaumeGomez@notriddle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add basic splat support to rustdoc - #160882

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis
Aug 12, 2026
Merged

Add basic splat support to rustdoc#160882
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis

Conversation

@bushrat011899

@bushrat011899bushrat011899 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Tracking Issue: #153629

Description

While experimenting on variadic min/max, it was noted that the rustdoc output for a splatted function is less than ideal. Consider the below:

pubfnsmallest<T:Ord>(#[rustc_splat]vals:implTupleReduce<Item = T>) -> T{// ...}

Currently, this is rendered in rustdoc as-is, obfuscating the variadic nature of the function:

image

Solution

I've updated the clean Parameter type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.

image

Notes

  • No AI tooling of any kind was used during the creation of this PR.

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Aug 10, 2026
@rustbot

Copy link
Copy Markdown
Collaborator

r? @GuillaumeGomez

rustbot has assigned @GuillaumeGomez.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: rustdoc
  • rustdoc expanded to 8 candidates
  • Random selection from GuillaumeGomez, lolbinarycat, notriddle

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@rustbot label F-splat

@rustbotrustbot added the F-splat `#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629 label Aug 10, 2026
@GuillaumeGomez

Copy link
Copy Markdown
Member

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

Done! Sorry I should've included that initially, haven't contributed to rustdoc before! I swapped the with args to confirm the test fails as well.

Comment threadtests/rustdoc-html/splat-variadic-ellipsis.rs
@notriddle

Copy link
Copy Markdown
Contributor

r? @GuillaumeGomez

@rustbot

Copy link
Copy Markdown
Collaborator

Requested reviewer is already assigned to this pull request.

Please choose another assignee.

Simply replace the parameter name and `#[rustc_splat]` attribute with an ellipsis. This preserves the type information of the splat while still documenting the variadic nature of the function.
@GuillaumeGomez

Copy link
Copy Markdown
Member

Looks good to me, thanks! r=me once CI pass.

@bors delegate+

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

✌️ @bushrat011899, you can now approve this pull request!

If @GuillaumeGomez told you to "r=me" after making some further change, then please make that change and post @bors r=GuillaumeGomez.

View changes since this delegation.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@bors r=GuillaumeGomez

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 413fdca has been approved by GuillaumeGomez

It is now in the queue for this repository.

@rust-borsrust-borsBot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 11, 2026
@jhprattjhpratt mentioned this pull request Aug 12, 2026
rust-borsBot pushed a commit that referenced this pull request Aug 12, 2026
Rollup of 14 pull requests
Successful merges:
- #160620 (Do not pass `-no-pie` on Windows)
- #160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- #160854 (Add -Zwasm-proc-macros flag)
- #160868 (std: Adjust cfgs again for TLS on WASI)
- #160882 (Add basic `splat` support to `rustdoc`)
- #160894 (Allow running an arbitrary number of try jobs per PR)
- #160790 (rustc-book: update sys-v abi link)
- #160878 (Add rust_analyzer to check-cfg names)
- #160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- #160920 (No longer mention the removed generic)
- #160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- #160924 (split up `rustc_session`)
- #160934 (Ensure TLS accesses don't call the global allocator through panic)
- #160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
@rust-bors
rust-borsBot merged commit 7718d14 into rust-lang:mainAug 12, 2026
13 checks passed
@rustbotrustbot added this to the 1.99.0 milestone Aug 12, 2026
rust-timer added a commit that referenced this pull request Aug 12, 2026
Rollup merge of #160882 - bushrat011899:rustdoc_splat_ellipsis, r=GuillaumeGomez
Add basic `splat` support to `rustdoc`
Tracking Issue: #153629
# Description
While experimenting on variadic `min`/`max`, it was [noted](rust-lang/libs-team#848 (comment)) that the `rustdoc` output for a splatted function is less than ideal. Consider the below:
```rust
pub fn smallest<T: Ord>(#[rustc_splat] vals: impl TupleReduce<Item = T>) -> T {
// ...
}
```
Currently, this is rendered in `rustdoc` as-is, obfuscating the variadic nature of the function:
<img width="819" height="211" alt="image" src="https://github.com/user-attachments/assets/68569fe6-7285-49f8-aae9-ddad0b10649c" />
## Solution
I've updated the clean `Parameter` type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.
<img width="820" height="211" alt="image" src="https://github.com/user-attachments/assets/58a27245-cc38-44e6-908a-f67991bcdb64" />
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
flip1995 pushed a commit to flip1995/rust-clippy that referenced this pull request Aug 17, 2026
Rollup of 14 pull requests
Successful merges:
- rust-lang/rust#160620 (Do not pass `-no-pie` on Windows)
- rust-lang/rust#160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- rust-lang/rust#160854 (Add -Zwasm-proc-macros flag)
- rust-lang/rust#160868 (std: Adjust cfgs again for TLS on WASI)
- rust-lang/rust#160882 (Add basic `splat` support to `rustdoc`)
- rust-lang/rust#160894 (Allow running an arbitrary number of try jobs per PR)
- rust-lang/rust#160790 (rustc-book: update sys-v abi link)
- rust-lang/rust#160878 (Add rust_analyzer to check-cfg names)
- rust-lang/rust#160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- rust-lang/rust#160920 (No longer mention the removed generic)
- rust-lang/rust#160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- rust-lang/rust#160924 (split up `rustc_session`)
- rust-lang/rust#160934 (Ensure TLS accesses don't call the global allocator through panic)
- rust-lang/rust#160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

F-splat`#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@bushrat011899@rustbot@GuillaumeGomez@notriddle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add basic splat support to rustdoc - #160882

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis
Aug 12, 2026
Merged

Add basic splat support to rustdoc#160882
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis

Conversation

@bushrat011899

@bushrat011899bushrat011899 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Tracking Issue: #153629

Description

While experimenting on variadic min/max, it was noted that the rustdoc output for a splatted function is less than ideal. Consider the below:

pubfnsmallest<T:Ord>(#[rustc_splat]vals:implTupleReduce<Item = T>) -> T{// ...}

Currently, this is rendered in rustdoc as-is, obfuscating the variadic nature of the function:

image

Solution

I've updated the clean Parameter type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.

image

Notes

  • No AI tooling of any kind was used during the creation of this PR.

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Aug 10, 2026
@rustbot

Copy link
Copy Markdown
Collaborator

r? @GuillaumeGomez

rustbot has assigned @GuillaumeGomez.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: rustdoc
  • rustdoc expanded to 8 candidates
  • Random selection from GuillaumeGomez, lolbinarycat, notriddle

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@rustbot label F-splat

@rustbotrustbot added the F-splat `#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629 label Aug 10, 2026
@GuillaumeGomez

Copy link
Copy Markdown
Member

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

Done! Sorry I should've included that initially, haven't contributed to rustdoc before! I swapped the with args to confirm the test fails as well.

Comment threadtests/rustdoc-html/splat-variadic-ellipsis.rs
@notriddle

Copy link
Copy Markdown
Contributor

r? @GuillaumeGomez

@rustbot

Copy link
Copy Markdown
Collaborator

Requested reviewer is already assigned to this pull request.

Please choose another assignee.

Simply replace the parameter name and `#[rustc_splat]` attribute with an ellipsis. This preserves the type information of the splat while still documenting the variadic nature of the function.
@GuillaumeGomez

Copy link
Copy Markdown
Member

Looks good to me, thanks! r=me once CI pass.

@bors delegate+

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

✌️ @bushrat011899, you can now approve this pull request!

If @GuillaumeGomez told you to "r=me" after making some further change, then please make that change and post @bors r=GuillaumeGomez.

View changes since this delegation.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@bors r=GuillaumeGomez

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 413fdca has been approved by GuillaumeGomez

It is now in the queue for this repository.

@rust-borsrust-borsBot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 11, 2026
@jhprattjhpratt mentioned this pull request Aug 12, 2026
rust-borsBot pushed a commit that referenced this pull request Aug 12, 2026
Rollup of 14 pull requests
Successful merges:
- #160620 (Do not pass `-no-pie` on Windows)
- #160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- #160854 (Add -Zwasm-proc-macros flag)
- #160868 (std: Adjust cfgs again for TLS on WASI)
- #160882 (Add basic `splat` support to `rustdoc`)
- #160894 (Allow running an arbitrary number of try jobs per PR)
- #160790 (rustc-book: update sys-v abi link)
- #160878 (Add rust_analyzer to check-cfg names)
- #160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- #160920 (No longer mention the removed generic)
- #160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- #160924 (split up `rustc_session`)
- #160934 (Ensure TLS accesses don't call the global allocator through panic)
- #160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
@rust-bors
rust-borsBot merged commit 7718d14 into rust-lang:mainAug 12, 2026
13 checks passed
@rustbotrustbot added this to the 1.99.0 milestone Aug 12, 2026
rust-timer added a commit that referenced this pull request Aug 12, 2026
Rollup merge of #160882 - bushrat011899:rustdoc_splat_ellipsis, r=GuillaumeGomez
Add basic `splat` support to `rustdoc`
Tracking Issue: #153629
# Description
While experimenting on variadic `min`/`max`, it was [noted](rust-lang/libs-team#848 (comment)) that the `rustdoc` output for a splatted function is less than ideal. Consider the below:
```rust
pub fn smallest<T: Ord>(#[rustc_splat] vals: impl TupleReduce<Item = T>) -> T {
// ...
}
```
Currently, this is rendered in `rustdoc` as-is, obfuscating the variadic nature of the function:
<img width="819" height="211" alt="image" src="https://github.com/user-attachments/assets/68569fe6-7285-49f8-aae9-ddad0b10649c" />
## Solution
I've updated the clean `Parameter` type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.
<img width="820" height="211" alt="image" src="https://github.com/user-attachments/assets/58a27245-cc38-44e6-908a-f67991bcdb64" />
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
flip1995 pushed a commit to flip1995/rust-clippy that referenced this pull request Aug 17, 2026
Rollup of 14 pull requests
Successful merges:
- rust-lang/rust#160620 (Do not pass `-no-pie` on Windows)
- rust-lang/rust#160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- rust-lang/rust#160854 (Add -Zwasm-proc-macros flag)
- rust-lang/rust#160868 (std: Adjust cfgs again for TLS on WASI)
- rust-lang/rust#160882 (Add basic `splat` support to `rustdoc`)
- rust-lang/rust#160894 (Allow running an arbitrary number of try jobs per PR)
- rust-lang/rust#160790 (rustc-book: update sys-v abi link)
- rust-lang/rust#160878 (Add rust_analyzer to check-cfg names)
- rust-lang/rust#160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- rust-lang/rust#160920 (No longer mention the removed generic)
- rust-lang/rust#160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- rust-lang/rust#160924 (split up `rustc_session`)
- rust-lang/rust#160934 (Ensure TLS accesses don't call the global allocator through panic)
- rust-lang/rust#160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

F-splat`#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@bushrat011899@rustbot@GuillaumeGomez@notriddle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add basic splat support to rustdoc - #160882

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis
Aug 12, 2026
Merged

Add basic splat support to rustdoc#160882
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis

Conversation

@bushrat011899

@bushrat011899bushrat011899 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Tracking Issue: #153629

Description

While experimenting on variadic min/max, it was noted that the rustdoc output for a splatted function is less than ideal. Consider the below:

pubfnsmallest<T:Ord>(#[rustc_splat]vals:implTupleReduce<Item = T>) -> T{// ...}

Currently, this is rendered in rustdoc as-is, obfuscating the variadic nature of the function:

image

Solution

I've updated the clean Parameter type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.

image

Notes

  • No AI tooling of any kind was used during the creation of this PR.

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Aug 10, 2026
@rustbot

Copy link
Copy Markdown
Collaborator

r? @GuillaumeGomez

rustbot has assigned @GuillaumeGomez.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: rustdoc
  • rustdoc expanded to 8 candidates
  • Random selection from GuillaumeGomez, lolbinarycat, notriddle

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@rustbot label F-splat

@rustbotrustbot added the F-splat `#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629 label Aug 10, 2026
@GuillaumeGomez

Copy link
Copy Markdown
Member

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

Done! Sorry I should've included that initially, haven't contributed to rustdoc before! I swapped the with args to confirm the test fails as well.

Comment threadtests/rustdoc-html/splat-variadic-ellipsis.rs
@notriddle

Copy link
Copy Markdown
Contributor

r? @GuillaumeGomez

@rustbot

Copy link
Copy Markdown
Collaborator

Requested reviewer is already assigned to this pull request.

Please choose another assignee.

Simply replace the parameter name and `#[rustc_splat]` attribute with an ellipsis. This preserves the type information of the splat while still documenting the variadic nature of the function.
@GuillaumeGomez

Copy link
Copy Markdown
Member

Looks good to me, thanks! r=me once CI pass.

@bors delegate+

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

✌️ @bushrat011899, you can now approve this pull request!

If @GuillaumeGomez told you to "r=me" after making some further change, then please make that change and post @bors r=GuillaumeGomez.

View changes since this delegation.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@bors r=GuillaumeGomez

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 413fdca has been approved by GuillaumeGomez

It is now in the queue for this repository.

@rust-borsrust-borsBot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 11, 2026
@jhprattjhpratt mentioned this pull request Aug 12, 2026
rust-borsBot pushed a commit that referenced this pull request Aug 12, 2026
Rollup of 14 pull requests
Successful merges:
- #160620 (Do not pass `-no-pie` on Windows)
- #160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- #160854 (Add -Zwasm-proc-macros flag)
- #160868 (std: Adjust cfgs again for TLS on WASI)
- #160882 (Add basic `splat` support to `rustdoc`)
- #160894 (Allow running an arbitrary number of try jobs per PR)
- #160790 (rustc-book: update sys-v abi link)
- #160878 (Add rust_analyzer to check-cfg names)
- #160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- #160920 (No longer mention the removed generic)
- #160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- #160924 (split up `rustc_session`)
- #160934 (Ensure TLS accesses don't call the global allocator through panic)
- #160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
@rust-bors
rust-borsBot merged commit 7718d14 into rust-lang:mainAug 12, 2026
13 checks passed
@rustbotrustbot added this to the 1.99.0 milestone Aug 12, 2026
rust-timer added a commit that referenced this pull request Aug 12, 2026
Rollup merge of #160882 - bushrat011899:rustdoc_splat_ellipsis, r=GuillaumeGomez
Add basic `splat` support to `rustdoc`
Tracking Issue: #153629
# Description
While experimenting on variadic `min`/`max`, it was [noted](rust-lang/libs-team#848 (comment)) that the `rustdoc` output for a splatted function is less than ideal. Consider the below:
```rust
pub fn smallest<T: Ord>(#[rustc_splat] vals: impl TupleReduce<Item = T>) -> T {
// ...
}
```
Currently, this is rendered in `rustdoc` as-is, obfuscating the variadic nature of the function:
<img width="819" height="211" alt="image" src="https://github.com/user-attachments/assets/68569fe6-7285-49f8-aae9-ddad0b10649c" />
## Solution
I've updated the clean `Parameter` type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.
<img width="820" height="211" alt="image" src="https://github.com/user-attachments/assets/58a27245-cc38-44e6-908a-f67991bcdb64" />
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
flip1995 pushed a commit to flip1995/rust-clippy that referenced this pull request Aug 17, 2026
Rollup of 14 pull requests
Successful merges:
- rust-lang/rust#160620 (Do not pass `-no-pie` on Windows)
- rust-lang/rust#160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- rust-lang/rust#160854 (Add -Zwasm-proc-macros flag)
- rust-lang/rust#160868 (std: Adjust cfgs again for TLS on WASI)
- rust-lang/rust#160882 (Add basic `splat` support to `rustdoc`)
- rust-lang/rust#160894 (Allow running an arbitrary number of try jobs per PR)
- rust-lang/rust#160790 (rustc-book: update sys-v abi link)
- rust-lang/rust#160878 (Add rust_analyzer to check-cfg names)
- rust-lang/rust#160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- rust-lang/rust#160920 (No longer mention the removed generic)
- rust-lang/rust#160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- rust-lang/rust#160924 (split up `rustc_session`)
- rust-lang/rust#160934 (Ensure TLS accesses don't call the global allocator through panic)
- rust-lang/rust#160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

F-splat`#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@bushrat011899@rustbot@GuillaumeGomez@notriddle
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add basic splat support to rustdoc - #160882

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis
Aug 12, 2026
Merged

Add basic splat support to rustdoc#160882
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
bushrat011899:rustdoc_splat_ellipsis

Conversation

@bushrat011899

@bushrat011899bushrat011899 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Tracking Issue: #153629

Description

While experimenting on variadic min/max, it was noted that the rustdoc output for a splatted function is less than ideal. Consider the below:

pubfnsmallest<T:Ord>(#[rustc_splat]vals:implTupleReduce<Item = T>) -> T{// ...}

Currently, this is rendered in rustdoc as-is, obfuscating the variadic nature of the function:

image

Solution

I've updated the clean Parameter type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.

image

Notes

  • No AI tooling of any kind was used during the creation of this PR.

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Aug 10, 2026
@rustbot

Copy link
Copy Markdown
Collaborator

r? @GuillaumeGomez

rustbot has assigned @GuillaumeGomez.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: rustdoc
  • rustdoc expanded to 8 candidates
  • Random selection from GuillaumeGomez, lolbinarycat, notriddle

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@rustbot label F-splat

@rustbotrustbot added the F-splat `#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629 label Aug 10, 2026
@GuillaumeGomez

Copy link
Copy Markdown
Member

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

Please add a regression test in tests/rustdoc-html to ensure the "..." is correctly generated.

Done! Sorry I should've included that initially, haven't contributed to rustdoc before! I swapped the with args to confirm the test fails as well.

Comment threadtests/rustdoc-html/splat-variadic-ellipsis.rs
@notriddle

Copy link
Copy Markdown
Contributor

r? @GuillaumeGomez

@rustbot

Copy link
Copy Markdown
Collaborator

Requested reviewer is already assigned to this pull request.

Please choose another assignee.

Simply replace the parameter name and `#[rustc_splat]` attribute with an ellipsis. This preserves the type information of the splat while still documenting the variadic nature of the function.
@GuillaumeGomez

Copy link
Copy Markdown
Member

Looks good to me, thanks! r=me once CI pass.

@bors delegate+

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

✌️ @bushrat011899, you can now approve this pull request!

If @GuillaumeGomez told you to "r=me" after making some further change, then please make that change and post @bors r=GuillaumeGomez.

View changes since this delegation.

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

@bors r=GuillaumeGomez

@rust-bors

rust-borsBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 413fdca has been approved by GuillaumeGomez

It is now in the queue for this repository.

@rust-borsrust-borsBot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 11, 2026
@jhprattjhpratt mentioned this pull request Aug 12, 2026
rust-borsBot pushed a commit that referenced this pull request Aug 12, 2026
Rollup of 14 pull requests
Successful merges:
- #160620 (Do not pass `-no-pie` on Windows)
- #160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- #160854 (Add -Zwasm-proc-macros flag)
- #160868 (std: Adjust cfgs again for TLS on WASI)
- #160882 (Add basic `splat` support to `rustdoc`)
- #160894 (Allow running an arbitrary number of try jobs per PR)
- #160790 (rustc-book: update sys-v abi link)
- #160878 (Add rust_analyzer to check-cfg names)
- #160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- #160920 (No longer mention the removed generic)
- #160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- #160924 (split up `rustc_session`)
- #160934 (Ensure TLS accesses don't call the global allocator through panic)
- #160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
@rust-bors
rust-borsBot merged commit 7718d14 into rust-lang:mainAug 12, 2026
13 checks passed
@rustbotrustbot added this to the 1.99.0 milestone Aug 12, 2026
rust-timer added a commit that referenced this pull request Aug 12, 2026
Rollup merge of #160882 - bushrat011899:rustdoc_splat_ellipsis, r=GuillaumeGomez
Add basic `splat` support to `rustdoc`
Tracking Issue: #153629
# Description
While experimenting on variadic `min`/`max`, it was [noted](rust-lang/libs-team#848 (comment)) that the `rustdoc` output for a splatted function is less than ideal. Consider the below:
```rust
pub fn smallest<T: Ord>(#[rustc_splat] vals: impl TupleReduce<Item = T>) -> T {
// ...
}
```
Currently, this is rendered in `rustdoc` as-is, obfuscating the variadic nature of the function:
<img width="819" height="211" alt="image" src="https://github.com/user-attachments/assets/68569fe6-7285-49f8-aae9-ddad0b10649c" />
## Solution
I've updated the clean `Parameter` type to include whether it is splatted, and overridden the display of that parameter to replace the name with an ellipsis, similar to how fake variadic implementations are displayed.
<img width="820" height="211" alt="image" src="https://github.com/user-attachments/assets/58a27245-cc38-44e6-908a-f67991bcdb64" />
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
flip1995 pushed a commit to flip1995/rust-clippy that referenced this pull request Aug 17, 2026
Rollup of 14 pull requests
Successful merges:
- rust-lang/rust#160620 (Do not pass `-no-pie` on Windows)
- rust-lang/rust#160731 (Arc: Remove unnecessary fmt::Display use for overflow assertion)
- rust-lang/rust#160854 (Add -Zwasm-proc-macros flag)
- rust-lang/rust#160868 (std: Adjust cfgs again for TLS on WASI)
- rust-lang/rust#160882 (Add basic `splat` support to `rustdoc`)
- rust-lang/rust#160894 (Allow running an arbitrary number of try jobs per PR)
- rust-lang/rust#160790 (rustc-book: update sys-v abi link)
- rust-lang/rust#160878 (Add rust_analyzer to check-cfg names)
- rust-lang/rust#160909 (tests/run-make-cargo/thumb-none-cortex-m: bump `cortex-m` dependency)
- rust-lang/rust#160920 (No longer mention the removed generic)
- rust-lang/rust#160921 (rustdoc: Fix invalid CSS classes generated for notable items)
- rust-lang/rust#160924 (split up `rustc_session`)
- rust-lang/rust#160934 (Ensure TLS accesses don't call the global allocator through panic)
- rust-lang/rust#160937 (Store the names of `Fn` trait parameters in the AST, fix rustfmt bug)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

F-splat`#![feature(splat)]` https://github.com/rust-lang/rust/issues/153629S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@bushrat011899@rustbot@GuillaumeGomez@notriddle