Skip to content

Rollup of 17 pull requests #139845

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 53 commits into from
Apr 15, 2025
Merged

Rollup of 17 pull requests #139845

merged 53 commits into from
Apr 15, 2025

Conversation

Zalathar
Copy link
Contributor

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

celinval and others added 30 commits April 7, 2025 11:17
Use `const_eval_select!()` macro to enable contract checking only at
runtime. The existing contract logic relies on closures,
which are not supported in constant functions.

This commit also removes one level of indirection for ensures clauses,
however, it currently has a spurious warning message when the bottom
of the function is unreachable.
Invert the order that we pass the arguments to the
`contract_check_ensures` function to avoid the warning when the tail
of the function is unreachable.

Note that the call itself is also unreachable, but we have already
handled that case by ignoring unreachable call for contract calls.
* Update comments to clarify the usage of zero as an indication for default stack size configuration
* Adjust conditional compilation to reflect the changes in stack size handling for the NuttX platform

This change improves clarity and consistency in stack size configuration across platforms.

Signed-off-by: Huang Qi <[email protected]>
According to the docs in `Command::output`:

> By default, stdout and stderr are captured (and used to provide the
resulting output). Stdin is not inherited from the parent and any attempt
by the child process to read from the stdin stream will result in the
stream immediately closing.

This was being violated by UEFI which was inheriting stdin by default.

While the docs don't explicitly state that the default should be NULL,
the behaviour seems like reading from NULL.

UEFI however, has a bit of a problem. The `EFI_SIMPLE_TEXT_INPUT_PROTOCOL`
only provides support for reading 1 key press. This means that you
either get an error, or it is assumed that the keypress was read
successfully. So there is no way to have a successful read of length 0.
Currently, I am returning UNSUPPORTED error when trying to read from
NULL stdin. On linux however, you will get a read of length 0 for Null
stdin.

One possible way to get around this is to translate one of the UEFI
errors to a read 0 (Maybe unsupported?). It is also possible to have a
non-standard error code, but well, not sure if we go that route.

Alternatively, if meaning of Stdio::Null is platform dependent, it
should be fine to keep the current behaviour of returning an error.

Signed-off-by: Ayush Singh <[email protected]>
Allows implementing Stdio::Null for Command in a deterministic manner.

Signed-off-by: Ayush Singh <[email protected]>
Stdio::MakePipe is not supported.

For Stdio::Null, return UNSUPPORTED. This is treated as read(0).
Additionally, have infinte loop on the notify function to prevent
wait_for_key from returning.

Signed-off-by: Ayush Singh <[email protected]>
Remove old references to the HIR map.
To avoid unnecessary interning.
`hir::AssocItem` currently has a boolean `fn_has_self_parameter` field,
which is misplaced, because it's only relevant for associated fns, not
for associated consts or types. This commit moves it (and renames it) to
the `AssocKind::Fn` variant, where it belongs.

This requires introducing a new C-style enum, `AssocTag`, which is like
`AssocKind` but without the fields. This is because `AssocKind` values
are passed to various functions like `find_by_ident_and_kind` to
indicate what kind of associated item should be searched for, and having
to specify `has_self` isn't relevant there.

New methods:
- Predicates `AssocItem::is_fn` and `AssocItem::is_method`.
- `AssocItem::as_tag` which converts `AssocItem::kind` to `AssocTag`.

Removed `find_by_name_and_kinds`, which is unused.

`AssocItem::descr` can now distinguish between methods and associated
functions, which slightly improves some error messages.
Some architectures (like s390x) require strings to be 2 byte aligned.
Therefor the section name will be marked with a .2  postfix on this
architectures.

Allowing a section name with a .1 or .2 postfix will make the test pass
on either platform.
This change maps the EOPNOTSUPP errno value (95) to std::io::ErrorKind::Unsupported in the decode_error_kind function for Unix platforms. Previously, it was incorrectly mapped to ErrorKind::Uncategorized.

Fixes rust-lang#139803
Because all the other similar methods are on `AssocItem`.
To accurately reflect that RPITIT assoc items don't have a name. This
avoids the use of `kw::Empty` to mean "no name", which is error prone.

Helps with rust-lang#137978.
Ubuntu 25.04 has `llvm-20` packages that we can start testing with.
The `Dockerfile` is otherwise the same as the `llvm-18`/`19` runners.
@rustbot rustbot added T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. T-libs Relevant to the library 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) rollup A PR which is a rollup labels Apr 15, 2025
@Zalathar
Copy link
Contributor Author

Rollup of everything not in #139826.

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Apr 15, 2025

📌 Commit 783b081 has been approved by Zalathar

It is now in the queue for this repository.

@bors bors 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 Apr 15, 2025
@bors
Copy link
Collaborator

bors commented Apr 15, 2025

⌛ Testing commit 783b081 with merge f433fa4...

@bors
Copy link
Collaborator

bors commented Apr 15, 2025

☀️ Test successful - checks-actions
Approved by: Zalathar
Pushing f433fa4 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Apr 15, 2025
@bors bors merged commit f433fa4 into rust-lang:master Apr 15, 2025
1 check passed
@rustbot rustbot added this to the 1.88.0 milestone Apr 15, 2025
Copy link

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 58c2dd9 (parent) -> f433fa4 (this PR)

Test differences

Show 254 test diffs

Stage 0

  • tests::test_fn_like_fn_like_span_join: pass -> [missing] (J1)
  • tests::test_fn_like_fn_like_span_ops: pass -> [missing] (J1)
  • mpmc::receiver_cloning: [missing] -> pass (J2)
  • mpmc::smoke_receiver_clone: [missing] -> pass (J2)
  • mpmc::smoke_receiver_clone_port_gone: [missing] -> pass (J2)

Stage 1

  • [ui] tests/ui/contracts/contract-const-fn.rs#all_pass: [missing] -> pass (J1)
  • [ui] tests/ui/contracts/contract-const-fn.rs#runtime_fail_post: [missing] -> pass (J1)
  • [ui] tests/ui/contracts/contract-const-fn.rs#runtime_fail_pre: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/auto-trait-coherence.rs: pass -> [missing] (J1)
  • [ui] tests/ui/impl-trait/auto-trait-contains-err.rs: pass -> [missing] (J1)
  • [ui] tests/ui/impl-trait/auto-trait-leak-rpass.rs: pass -> [missing] (J1)
  • [ui] tests/ui/impl-trait/auto-trait-leak.rs: pass -> [missing] (J1)
  • [ui] tests/ui/impl-trait/auto-trait-leak2.rs: pass -> [missing] (J1)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/auto-trait-coherence.rs: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/auto-trait-contains-err.rs: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/auto-trait-leak-rpass.rs: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/auto-trait-leak.rs: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/auto-trait-leak2.rs: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/avoid-query-cycle-via-item-bound.rs#current: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/avoid-query-cycle-via-item-bound.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/in-trait/method-compatability-via-leakage-cycle.rs#current: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/in-trait/method-compatability-via-leakage-cycle.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/in-trait/method-compatability-via-leakage.rs#current: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/in-trait/method-compatability-via-leakage.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/in-trait/refine-cycle.rs: pass -> [missing] (J1)
  • [ui] tests/ui/impl-trait/in-trait/refine-cycle.rs#current: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/in-trait/refine-cycle.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/traits/winnowing/global-where-bound-region-constraints-2.rs#current: [missing] -> pass (J1)
  • [ui] tests/ui/traits/winnowing/global-where-bound-region-constraints-2.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/traits/winnowing/global-where-bound-region-constraints.rs#current: [missing] -> pass (J1)
  • [ui] tests/ui/traits/winnowing/global-where-bound-region-constraints.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/traits/winnowing/norm-where-bound-gt-alias-bound.rs#current: [missing] -> pass (J1)
  • [ui] tests/ui/traits/winnowing/norm-where-bound-gt-alias-bound.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/type/pattern_types/derives_fail.rs: [missing] -> pass (J1)
  • [ui] tests/ui/type/pattern_types/matching.rs: [missing] -> pass (J1)
  • [ui] tests/ui/type/pattern_types/matching_fail.rs: [missing] -> pass (J1)
  • mpmc::receiver_cloning: [missing] -> pass (J3)
  • mpmc::smoke_receiver_clone: [missing] -> pass (J3)
  • mpmc::smoke_receiver_clone_port_gone: [missing] -> pass (J3)

Stage 2

  • [ui] tests/ui/contracts/contract-const-fn.rs#all_pass: [missing] -> pass (J0)
  • [ui] tests/ui/contracts/contract-const-fn.rs#runtime_fail_post: [missing] -> pass (J0)
  • [ui] tests/ui/contracts/contract-const-fn.rs#runtime_fail_pre: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/auto-trait-coherence.rs: pass -> [missing] (J0)
  • [ui] tests/ui/impl-trait/auto-trait-contains-err.rs: pass -> [missing] (J0)
  • [ui] tests/ui/impl-trait/auto-trait-leak-rpass.rs: pass -> [missing] (J0)
  • [ui] tests/ui/impl-trait/auto-trait-leak.rs: pass -> [missing] (J0)
  • [ui] tests/ui/impl-trait/auto-trait-leak2.rs: pass -> [missing] (J0)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/auto-trait-coherence.rs: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/auto-trait-contains-err.rs: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/auto-trait-leak-rpass.rs: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/auto-trait-leak.rs: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/auto-trait-leak2.rs: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/avoid-query-cycle-via-item-bound.rs#current: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/auto-trait-leakage/avoid-query-cycle-via-item-bound.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/in-trait/method-compatability-via-leakage-cycle.rs#current: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/in-trait/method-compatability-via-leakage-cycle.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/in-trait/method-compatability-via-leakage.rs#current: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/in-trait/method-compatability-via-leakage.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/in-trait/refine-cycle.rs: pass -> [missing] (J0)
  • [ui] tests/ui/impl-trait/in-trait/refine-cycle.rs#current: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/in-trait/refine-cycle.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/traits/winnowing/global-where-bound-region-constraints-2.rs#current: [missing] -> pass (J0)
  • [ui] tests/ui/traits/winnowing/global-where-bound-region-constraints-2.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/traits/winnowing/global-where-bound-region-constraints.rs#current: [missing] -> pass (J0)
  • [ui] tests/ui/traits/winnowing/global-where-bound-region-constraints.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/traits/winnowing/norm-where-bound-gt-alias-bound.rs#current: [missing] -> pass (J0)
  • [ui] tests/ui/traits/winnowing/norm-where-bound-gt-alias-bound.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/type/pattern_types/derives_fail.rs: [missing] -> pass (J0)
  • [ui] tests/ui/type/pattern_types/matching.rs: [missing] -> pass (J0)
  • [ui] tests/ui/type/pattern_types/matching_fail.rs: [missing] -> pass (J0)

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

Job group index

Job duration changes

  1. dist-aarch64-linux: 5537.6s -> 8318.3s (50.2%)
  2. dist-x86_64-apple: 7360.7s -> 9388.7s (27.6%)
  3. dist-i686-msvc: 7078.0s -> 8273.7s (16.9%)
  4. dist-apple-various: 7281.4s -> 8429.3s (15.8%)
  5. x86_64-apple-1: 7871.2s -> 8917.4s (13.3%)
  6. i686-msvc-1: 10402.0s -> 9308.3s (-10.5%)
  7. dist-riscv64-linux: 5746.2s -> 5209.3s (-9.3%)
  8. dist-armv7-linux: 5388.3s -> 5725.9s (6.3%)
  9. dist-x86_64-netbsd: 5064.0s -> 5351.4s (5.7%)
  10. i686-msvc-2: 6974.4s -> 7342.3s (5.3%)
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.

@Zalathar Zalathar deleted the rollup-u5u5y1v branch April 15, 2025 11:13
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#138374 Enable contracts for const functions 68444fd6f45f491053667670036f6120511b9785 (link)
#138380 ci: add runners for vanilla LLVM 20 fb9642454c0e26db85eacab273888382995267ec (link)
#138393 Allow const patterns of matches to contain pattern types 26b6b0a147f1fde5a020dfe1162aebf93a2da323 (link)
#139517 std: sys: process: uefi: Use NULL stdin by default 17ab288ebacdc0c7b59e6b5bc478672502a0b213 (link)
#139554 std: add Output::exit_ok 36e0257458eb8b6d856924680d9b9feb2ac15c93 (link)
#139660 compiletest: Add an experimental new executor to replace li… d12e03558df492b502657b29085e5e1c56ec4596 (link)
#139669 Overhaul AssocItem 074b518688331031914b3c93df30e2ed10d98dfa (link)
#139671 Proc macro span API redesign: Replace proc_macro::SourceFil… 213399d0a8ba77e517d2446c54723531d5635e9a (link)
#139750 std/thread: Use default stack size from menuconfig for NuttX 370b27eef3e2f957405b59756c8107ae0e23710a (link)
#139772 Remove hir::Map 1a966e24e45e09f9c4d168314cce0faf544ff70d (link)
#139785 Let CStrings be either 1 or 2 byte aligned. 231091db147d0bdfcef3a3a92734dd8005f91941 (link)
#139789 do not unnecessarily leak auto traits in item bounds 2c1c0087628d4de9a730a5f16242d47e4d5aa884 (link)
#139791 drop global where-bounds before merging candidates 7762a867d84d0142341fad65fb51b48e9d5e570f (link)
#139798 normalize: prefer ParamEnv over AliasBound candidates e24ca20c2716936557c900eb3b03416966bdd3e9 (link)
#139822 Fix: Map EOPNOTSUPP to ErrorKind::Unsupported on Unix 9bb92231359e3e146fb7ba9469ba90a752de399f (link)
#139833 Fix some HIR pretty-printing problems f4c49bc8c5f013a83b8bf792dff35a803dd6c6cb (link)
#139836 Basic tests of MPMC receiver cloning 2dd6e54ec493e7bcdea109b6f869f2be84cc76a1 (link)

previous master: 58c2dd9a54

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (f433fa4): comparison URL.

Overall result: ✅ improvements - no action needed

@rustbot label: -perf-regression

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-1.1% [-1.7%, -0.2%] 9
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary 3.0%, secondary -1.8%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
7.7% [1.0%, 11.2%] 3
Regressions ❌
(secondary)
5.0% [5.0%, 5.0%] 1
Improvements ✅
(primary)
-0.6% [-0.8%, -0.5%] 4
Improvements ✅
(secondary)
-4.0% [-4.6%, -3.0%] 3
All ❌✅ (primary) 3.0% [-0.8%, 11.2%] 7

Cycles

Results (primary 0.5%, secondary -2.9%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.5% [0.4%, 0.6%] 2
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.9% [-2.9%, -2.9%] 1
All ❌✅ (primary) 0.5% [0.4%, 0.6%] 2

Binary size

Results (primary 0.0%, secondary -0.1%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.0% [0.0%, 0.0%] 4
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.0% [-0.0%, -0.0%] 1
Improvements ✅
(secondary)
-0.1% [-0.1%, -0.1%] 3
All ❌✅ (primary) 0.0% [-0.0%, 0.0%] 5

Bootstrap: 781.063s -> 781.719s (0.08%)
Artifact size: 365.12 MiB -> 365.16 MiB (0.01%)

@Zalathar
Copy link
Contributor Author

@rust-timer build 074b518

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (074b518): comparison URL.

Overall result: ✅ improvements - no action needed

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-1.4% [-1.7%, -1.0%] 7
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -1.0%, secondary -3.0%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.5% [0.5%, 0.6%] 2
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-1.3% [-3.7%, -0.5%] 10
Improvements ✅
(secondary)
-3.0% [-3.0%, -3.0%] 1
All ❌✅ (primary) -1.0% [-3.7%, 0.6%] 12

Cycles

Results (primary 0.5%, secondary -2.3%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.5% [0.4%, 0.6%] 3
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.3% [-2.3%, -2.3%] 1
All ❌✅ (primary) 0.5% [0.4%, 0.6%] 3

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 781.063s -> 781.038s (-0.00%)
Artifact size: 365.12 MiB -> 365.09 MiB (-0.01%)

@Zalathar Zalathar mentioned this pull request Apr 16, 2025
github-actions bot pushed a commit to model-checking/verify-rust-std that referenced this pull request Apr 19, 2025
Rollup of 17 pull requests

Successful merges:

 - rust-lang#138374 (Enable contracts for const functions)
 - rust-lang#138380 (ci: add runners for vanilla LLVM 20)
 - rust-lang#138393 (Allow const patterns of matches to contain pattern types)
 - rust-lang#139517 (std: sys: process: uefi: Use NULL stdin by default)
 - rust-lang#139554 (std: add Output::exit_ok)
 - rust-lang#139660 (compiletest: Add an experimental new executor to replace libtest)
 - rust-lang#139669 (Overhaul `AssocItem`)
 - rust-lang#139671 (Proc macro span API redesign: Replace proc_macro::SourceFile by Span::{file, local_file})
 - rust-lang#139750 (std/thread: Use default stack size from menuconfig for NuttX)
 - rust-lang#139772 (Remove `hir::Map`)
 - rust-lang#139785 (Let CStrings be either 1 or 2 byte aligned.)
 - rust-lang#139789 (do not unnecessarily leak auto traits in item bounds)
 - rust-lang#139791 (drop global where-bounds before merging candidates)
 - rust-lang#139798 (normalize: prefer `ParamEnv` over `AliasBound` candidates)
 - rust-lang#139822 (Fix: Map EOPNOTSUPP to ErrorKind::Unsupported on Unix)
 - rust-lang#139833 (Fix some HIR pretty-printing problems)
 - rust-lang#139836 (Basic tests of MPMC receiver cloning)

r? `@ghost`
`@rustbot` modify labels: rollup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-compiletest Area: The compiletest test runner A-rustc-dev-guide Area: rustc-dev-guide A-testsuite Area: The testsuite used to check the correctness of rustc merged-by-bors This PR was explicitly merged by bors. O-unix Operating system: Unix-like PG-exploit-mitigations Project group: Exploit mitigations rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. T-libs Relevant to the library 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)
Projects
None yet
Development

Successfully merging this pull request may close these issues.