Skip to content

Conversation

@GuillaumeGomez
Copy link
Member

@GuillaumeGomez GuillaumeGomez commented Dec 4, 2025

Part of #131229.

This PR ports the doc attributes to the new attribute API. However, there are things that will need to be fixed in a follow-up:

  • Some part of cfg_old.rs are likely unused now, so they should be removed.
  • Not all error/lints are emitted at the same time anymore, making them kinda less useful considering that you need to run and fix rustc/rustdoc multiple times to get through all of them.
  • For coherency with the other attribute errors, I didn't modify the default output too much, meaning that we have some new messages now. I'll likely come back to that to check if the previous ones were better in a case-by-case approach.
  • doc(test(attr(...))) is handled in a horrifying manner currently. Until we can handle it correctly with the Attribute system, it'll remain that thing we're all very ashamed of. 😈
  • A type in rustdoc got its size increased, I'll check the impact on performance. But in any case, I plan to improve it in a follow-up so should be "ok".
  • Because of error reporting, some fields of Doc are suboptimal, like inline which instead of being an Option is a ThinVec because we report the error later on. Part of the things I'm not super happy about but can be postponed to future me.
  • In src/librustdoc/clean/cfg.rs, the pub(crate) fn parse(cfg: &MetaItemInner) -> Result<Cfg, InvalidCfgError> { function should be removed once cfg_trace has been ported to new cfg API.
  • Size of type DocFragment went from 32 to 48. Would be nice to get it back to 32.
  • malformed `doc` attribute input wasn't meant for so many candidates, should be improved.
  • See how many of the checks in check_attr we can move to attribute parsing
  • Port target checking to be in the attribute parser completely
  • Fix target checking for doc(alias) on fields & patterns

And finally, once this PR is merged, I plan to finally stabilize doc_cfg feature. :)

cc @jdonszelmann
r? @JonathanBrouwer

@rustbot
Copy link
Collaborator

rustbot commented Dec 4, 2025

Some changes occurred in compiler/rustc_passes/src/check_attr.rs

cc @jdonszelmann

Some changes occurred in compiler/rustc_attr_parsing

cc @jdonszelmann

These commits modify the Cargo.lock file. Unintentional changes to Cargo.lock can be introduced when switching branches and rebasing PRs.

If this was unintentional then you should revert the changes before this PR is merged.
Otherwise, you can ignore this comment.

Some changes occurred in compiler/rustc_hir/src/attrs

cc @jdonszelmann

@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. 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 Dec 4, 2025
@GuillaumeGomez
Copy link
Member Author

Just to be safe:

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Dec 4, 2025
Port `doc` attributes to new attribute API
@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Dec 4, 2025
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@GuillaumeGomez
Copy link
Member Author

Ah right, forgot about clippy. Updating it as well.

@rustbot
Copy link
Collaborator

rustbot commented Dec 4, 2025

Some changes occurred in src/tools/clippy

cc @rust-lang/clippy

@rustbot rustbot added the T-clippy Relevant to the Clippy team. label Dec 4, 2025
@rust-bors
Copy link

rust-bors bot commented Dec 4, 2025

☀️ Try build successful (CI)
Build commit: 4f24013 (4f240130369441697d5ccde454291d18ea71990c, parent: 5372fc9cb790c112ce707991b1fcc025cec8fdbe)

@rust-timer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (4f24013): comparison URL.

Overall result: ❌✅ regressions and improvements - please read the text below

Benchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf.

Next Steps: If you can justify the regressions found in this try perf run, please do so in sufficient writing along with @rustbot label: +perf-regression-triaged. If not, please fix the regressions and do another perf run. If its results are neutral or positive, the label will be automatically removed.

@bors rollup=never
@rustbot label: -S-waiting-on-perf +perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
1.0% [0.2%, 3.1%] 30
Improvements ✅
(primary)
-0.5% [-1.3%, -0.1%] 39
Improvements ✅
(secondary)
-0.6% [-1.1%, -0.1%] 30
All ❌✅ (primary) -0.5% [-1.3%, -0.1%] 39

Max RSS (memory usage)

Results (primary -0.2%, secondary 1.5%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
1.3% [0.8%, 1.5%] 3
Regressions ❌
(secondary)
3.6% [1.4%, 6.4%] 11
Improvements ✅
(primary)
-1.0% [-2.3%, -0.5%] 6
Improvements ✅
(secondary)
-1.4% [-2.5%, -0.6%] 8
All ❌✅ (primary) -0.2% [-2.3%, 1.5%] 9

Cycles

Results (secondary 2.0%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
4.1% [2.2%, 9.8%] 8
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.8% [-5.5%, -2.2%] 3
All ❌✅ (primary) - - 0

Binary size

Results (primary -0.5%, secondary -0.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
0.1% [0.0%, 0.3%] 23
Regressions ❌
(secondary)
0.0% [0.0%, 0.0%] 9
Improvements ✅
(primary)
-0.9% [-3.1%, -0.0%] 28
Improvements ✅
(secondary)
-0.2% [-0.3%, -0.0%] 15
All ❌✅ (primary) -0.5% [-3.1%, 0.3%] 51

Bootstrap: 468.725s -> 473.041s (0.92%)
Artifact size: 386.77 MiB -> 389.06 MiB (0.59%)

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels Dec 4, 2025
@GuillaumeGomez
Copy link
Member Author

GuillaumeGomez commented Dec 4, 2025

Strange, one doc test has a regression but all others are faster.

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Collaborator

bors commented Dec 5, 2025

☔ The latest upstream changes (presumably #149646) made this pull request unmergeable. Please resolve the merge conflicts.

@JonathanBrouwer
Copy link
Contributor

JonathanBrouwer commented Dec 5, 2025

I'd say since perf looks very good on primary benchmarks and is mixed on secondary benchmarks, I'm happy with perf as-is. I am wondering what caused the regression on include-blob though, it doesn't even use any doc attributes
@rustbot label: +perf-regression-triaged

@rust-bors
Copy link

rust-bors bot commented Dec 11, 2025

☀️ Try build successful (CI)
Build commit: d384871 (d3848711d34305859add1225b60999545f515156, parent: f5209000832c9d3bc29c91f4daef4ca9f28dc797)

@bors
Copy link
Collaborator

bors commented Dec 11, 2025

⌛ Testing commit 5180632 with merge 5b150d2...

@bors
Copy link
Collaborator

bors commented Dec 12, 2025

☀️ Test successful - checks-actions
Approved by: jdonszelmann,jonathanbrouwer
Pushing 5b150d2 to main...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Dec 12, 2025
@bors bors merged commit 5b150d2 into rust-lang:main Dec 12, 2025
13 checks passed
@rustbot rustbot added this to the 1.94.0 milestone Dec 12, 2025
@github-actions
Copy link
Contributor

What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing f520900 (parent) -> 5b150d2 (this PR)

Test differences

Show 949 test diffs

Stage 0

  • errors::verify_passes_abi_invalid_attribute_94: pass -> [missing] (J1)
  • errors::verify_passes_attr_application_struct_enum_union_84: [missing] -> pass (J1)
  • errors::verify_passes_attr_application_struct_union_107: pass -> [missing] (J1)
  • errors::verify_passes_attr_application_struct_union_83: [missing] -> pass (J1)
  • errors::verify_passes_debug_visualizer_unreadable_40: [missing] -> pass (J1)
  • errors::verify_passes_doc_alias_bad_location_14: [missing] -> pass (J1)
  • errors::verify_passes_doc_alias_bad_location_20: pass -> [missing] (J1)
  • errors::verify_passes_doc_expect_str_16: pass -> [missing] (J1)
  • errors::verify_passes_doc_masked_only_extern_crate_34: pass -> [missing] (J1)
  • errors::verify_passes_doc_search_unbox_invalid_20: [missing] -> pass (J1)
  • errors::verify_passes_doc_test_takes_list_39: pass -> [missing] (J1)
  • errors::verify_passes_doc_test_unknown_any_44: pass -> [missing] (J1)
  • errors::verify_passes_extern_main_99: pass -> [missing] (J1)
  • errors::verify_passes_lang_item_on_incorrect_target_83: pass -> [missing] (J1)
  • errors::verify_passes_non_exported_macro_invalid_attrs_45: [missing] -> pass (J1)
  • errors::verify_passes_proc_macro_bad_sig_122: pass -> [missing] (J1)
  • errors::verify_passes_proc_macro_bad_sig_98: [missing] -> pass (J1)
  • errors::verify_passes_rustc_lint_opt_deny_field_access_74: pass -> [missing] (J1)
  • errors::verify_passes_rustc_lint_opt_ty_49: [missing] -> pass (J1)
  • errors::verify_passes_transparent_incompatible_109: pass -> [missing] (J1)
  • errors::verify_passes_transparent_incompatible_85: [missing] -> pass (J1)
  • errors::verify_passes_unexportable_generic_fn_107: [missing] -> pass (J1)
  • errors::verify_passes_unnecessary_stable_feature_123: pass -> [missing] (J1)
  • errors::verify_passes_unsupported_attributes_in_where_105: [missing] -> pass (J1)
  • errors::verify_passes_unused_duplicate_71: pass -> [missing] (J1)
  • errors::verify_passes_unused_multiple_48: [missing] -> pass (J1)
  • lints::verify_lint_doc_alias_duplicated_126: [missing] -> pass (J1)
  • lints::verify_lint_doc_auto_cfg_wrong_literal_136: [missing] -> pass (J1)
  • lints::verify_lint_doc_test_unknown_138: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_as_needed_compatibility_57: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_doc_alias_bad_char_3: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_expects_feature_list_22: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_invalid_alignment_value_38: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_invalid_repr_hint_no_value_16: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_invalid_target_37: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_missing_since_2: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_missing_since_7: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_multiple_modifiers_53: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_non_ident_feature_6: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_null_on_export_34: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_null_on_objc_class_36: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_stability_outside_std_40: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_unknown_version_literal_26: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_unused_multiple_27: pass -> [missing] (J1)

Stage 1

  • errors::verify_passes_autodiff_attr_6: pass -> [missing] (J0)
  • errors::verify_passes_both_ffi_const_and_pure_51: pass -> [missing] (J0)
  • errors::verify_passes_doc_alias_bad_char_18: pass -> [missing] (J0)
  • errors::verify_passes_doc_alias_bad_location_20: pass -> [missing] (J0)
  • errors::verify_passes_doc_alias_empty_17: pass -> [missing] (J0)
  • errors::verify_passes_doc_attr_expects_no_value_5: pass -> [missing] (J0)
  • errors::verify_passes_doc_attr_expects_string_4: pass -> [missing] (J0)
  • errors::verify_passes_doc_auto_cfg_wrong_literal_40: pass -> [missing] (J0)
  • errors::verify_passes_doc_fake_variadic_not_valid_29: pass -> [missing] (J0)
  • errors::verify_passes_doc_inline_conflict_21: [missing] -> pass (J0)
  • errors::verify_passes_doc_inline_only_use_22: [missing] -> pass (J0)
  • errors::verify_passes_doc_search_unbox_invalid_31: pass -> [missing] (J0)
  • errors::verify_passes_duplicate_diagnostic_item_in_crate_85: pass -> [missing] (J0)
  • errors::verify_passes_extern_main_75: [missing] -> pass (J0)
  • errors::verify_passes_ignored_attr_with_macro_11: pass -> [missing] (J0)
  • errors::verify_passes_incorrect_crate_type_77: [missing] -> pass (J0)
  • errors::verify_passes_ineffective_unstable_impl_125: pass -> [missing] (J0)
  • errors::verify_passes_layout_abi_62: [missing] -> pass (J0)
  • errors::verify_passes_layout_abi_86: pass -> [missing] (J0)
  • errors::verify_passes_layout_of_66: [missing] -> pass (J0)
  • errors::verify_passes_missing_lang_item_56: [missing] -> pass (J0)
  • errors::verify_passes_missing_panic_handler_78: pass -> [missing] (J0)
  • errors::verify_passes_non_exhaustive_with_default_field_values_11: [missing] -> pass (J0)
  • errors::verify_passes_non_exhaustive_with_default_field_values_13: pass -> [missing] (J0)
  • errors::verify_passes_object_lifetime_err_80: [missing] -> pass (J0)
  • errors::verify_passes_panic_unwind_without_std_79: pass -> [missing] (J0)
  • errors::verify_passes_repr_align_should_be_align_113: [missing] -> pass (J0)
  • errors::verify_passes_rustc_legacy_const_generics_index_32: [missing] -> pass (J0)
  • errors::verify_passes_rustc_legacy_const_generics_index_negative_34: [missing] -> pass (J0)
  • errors::verify_passes_rustc_legacy_const_generics_only_55: pass -> [missing] (J0)
  • errors::verify_passes_rustc_lint_opt_ty_73: pass -> [missing] (J0)
  • errors::verify_passes_unexportable_priv_item_111: [missing] -> pass (J0)
  • errors::verify_passes_unnecessary_partial_stable_feature_124: pass -> [missing] (J0)
  • errors::verify_passes_unused_duplicate_47: [missing] -> pass (J0)
  • errors::verify_passes_unused_duplicate_71: pass -> [missing] (J0)
  • errors::verify_passes_unused_multiple_48: [missing] -> pass (J0)
  • errors::verify_passes_unused_multiple_72: pass -> [missing] (J0)
  • errors::verify_passes_useless_assignment_102: pass -> [missing] (J0)
  • lints::verify_lint_doc_auto_cfg_hide_show_expects_list_129: [missing] -> pass (J0)
  • lints::verify_lint_doc_unknown_plugins_134: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_as_needed_compatibility_62: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_cfg_predicate_identifier_23: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_deprecated_item_suggestion_24: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_doc_alias_malformed_65: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_empty_link_name_46: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_expected_version_literal_21: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_expects_features_23: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_ill_formed_attribute_input_28: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_incompatible_wasm_link_53: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_incorrect_repr_format_packed_expect_integer_9: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_missing_note_8: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_null_on_objc_selector_37: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_repr_ident_44: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_soft_no_args_30: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_whole_archive_needs_static_61: [missing] -> pass (J0)

Stage 2

  • [rustdoc] tests/rustdoc/doc-on-keyword.rs: [missing] -> pass (J2)

(and 682 additional test diffs)

Additionally, 167 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard 5b150d238fbd4fe7bc2cd3140d8e6fb4406099fa --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. dist-aarch64-apple: 8009.4s -> 10891.2s (+36.0%)
  2. aarch64-apple: 9726.4s -> 11545.1s (+18.7%)
  3. dist-aarch64-msvc: 5741.2s -> 6533.7s (+13.8%)
  4. dist-loongarch64-musl: 5228.5s -> 5849.2s (+11.9%)
  5. aarch64-gnu-llvm-20-2: 2535.1s -> 2317.0s (-8.6%)
  6. x86_64-gnu-debug: 7217.2s -> 6638.3s (-8.0%)
  7. pr-check-1: 1885.8s -> 2026.3s (+7.5%)
  8. x86_64-gnu-llvm-21-1: 3245.7s -> 3487.0s (+7.4%)
  9. dist-x86_64-llvm-mingw: 6736.9s -> 7236.2s (+7.4%)
  10. dist-x86_64-mingw: 9005.4s -> 8428.1s (-6.4%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (5b150d2): comparison URL.

Overall result: ❌✅ regressions and improvements - please read the text below

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
0.2% [0.2%, 0.2%] 1
Regressions ❌
(secondary)
1.4% [0.1%, 3.1%] 18
Improvements ✅
(primary)
-0.6% [-1.3%, -0.2%] 36
Improvements ✅
(secondary)
-0.6% [-1.2%, -0.1%] 32
All ❌✅ (primary) -0.6% [-1.3%, 0.2%] 37

Max RSS (memory usage)

Results (primary -0.9%, secondary 0.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
1.3% [1.1%, 1.4%] 2
Regressions ❌
(secondary)
1.8% [1.0%, 3.2%] 3
Improvements ✅
(primary)
-1.4% [-3.2%, -0.5%] 9
Improvements ✅
(secondary)
-1.1% [-2.3%, -0.7%] 4
All ❌✅ (primary) -0.9% [-3.2%, 1.4%] 11

Cycles

Results (primary -2.4%, secondary 2.4%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
3.0% [1.7%, 6.8%] 9
Improvements ✅
(primary)
-2.4% [-2.4%, -2.4%] 1
Improvements ✅
(secondary)
-2.6% [-2.6%, -2.6%] 1
All ❌✅ (primary) -2.4% [-2.4%, -2.4%] 1

Binary size

Results (primary -0.4%, secondary -0.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
0.1% [0.0%, 0.3%] 30
Regressions ❌
(secondary)
0.0% [0.0%, 0.0%] 9
Improvements ✅
(primary)
-0.8% [-3.1%, -0.0%] 34
Improvements ✅
(secondary)
-0.2% [-0.3%, -0.0%] 16
All ❌✅ (primary) -0.4% [-3.1%, 0.3%] 64

Bootstrap: 472.896s -> 473.727s (0.18%)
Artifact size: 389.04 MiB -> 389.29 MiB (0.06%)

@nnethercote
Copy link
Contributor

Improvements outweigh the regressions. icount regressions are mostly for include-blob which is just a secondary stress test.

@rustbot label: +perf-regression-triaged

@therealprof
Copy link
Contributor

The binary size changes are a bit curious, I wouldn't have expected this change to have an impact on the compiled outputs.

@GuillaumeGomez GuillaumeGomez deleted the doc-attr-based branch December 12, 2025 13:02
@GuillaumeGomez
Copy link
Member Author

Side effects of big PR: mix of unknown perf changes. ^^'

@lqd
Copy link
Member

lqd commented Dec 12, 2025

Remember that there’s rustdoc-only metadata in rmetas, so reducing this (willingly or unexpectedly) will reduce the binary size that encompasses crate metadata.

@GuillaumeGomez
Copy link
Member Author

That's the thing: normally it shouldn't have been changed.

@JonathanBrouwer
Copy link
Contributor

Also from my experience the binary size is just quite noisy in the benchmarks, not sure why. Small changes in code sometimes cause large changes in binary size

@lqd
Copy link
Member

lqd commented Dec 12, 2025

The change looks to be in rmetas should you need to investigate.

@GuillaumeGomez
Copy link
Member Author

Already on it. ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-rustdoc-json Area: Rustdoc JSON backend merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.