Skip to content

de-non_const Iterator trait methods#153708

Draft
Lars-Schumann wants to merge 1 commit intorust-lang:mainfrom
Lars-Schumann:de-non_const-iterator-trait-methods
Draft

de-non_const Iterator trait methods#153708
Lars-Schumann wants to merge 1 commit intorust-lang:mainfrom
Lars-Schumann:de-non_const-iterator-trait-methods

Conversation

@Lars-Schumann
Copy link
Copy Markdown
Contributor

@Lars-Schumann Lars-Schumann commented Mar 11, 2026

View all comments

#92476

constifying Iterators methods that don't immediately or transitively need const closures or ugly hacks.

@rustbot rustbot added 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-libs Relevant to the library team, which will review and decide on the PR/issue. labels Mar 11, 2026
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented Mar 11, 2026

r? @scottmcm

rustbot has assigned @scottmcm.
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: @scottmcm, libs
  • @scottmcm, libs expanded to 8 candidates
  • Random selection from Mark-Simulacrum, scottmcm

@Lars-Schumann Lars-Schumann changed the title de-non_const Iterator trait methods de-non_const Iterator trait methods Mar 11, 2026
@Lars-Schumann Lars-Schumann force-pushed the de-non_const-iterator-trait-methods branch from 5e438b4 to 2960e3a Compare March 11, 2026 13:22
@oli-obk oli-obk assigned oli-obk and fee1-dead and unassigned scottmcm Mar 11, 2026
{
default fn spec_advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>> {
for i in 0..n {
// FIXME(const-hack): this should be `for i in 0..n`
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should figure that one out first 😅

Copy link
Copy Markdown
Contributor Author

@Lars-Schumann Lars-Schumann Mar 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As far as const-hacks go, this is very tame, and I didn't want to make this pr too big by constifying the Range Iterator impl as well (if that's even possible right now)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yea, def don't do range iterators this in this one, I was wondering if we'd just delay on touching this one. But it is tame, and I do worry that by not doing progress here we end up in a deadlock somewhere with other iterator constifications.

@oli-obk
Copy link
Copy Markdown
Contributor

oli-obk commented Mar 12, 2026

@bors r+ rollup

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Mar 12, 2026

📌 Commit 2960e3a has been approved by oli-obk

It is now in the queue for this repository.

@rust-bors rust-bors bot 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 Mar 12, 2026
Zalathar added a commit to Zalathar/rust that referenced this pull request Mar 12, 2026
…r-trait-methods, r=oli-obk

de-non_const `Iterator` trait methods

rust-lang#92476

constifying Iterators methods that don't immediately or transitively need const closures or ugly hacks.
rust-bors bot pushed a commit that referenced this pull request Mar 12, 2026
Rollup of 11 pull requests

Successful merges:

 - #153726 (Add optional CI job to build the compiler with the parallel frontend)
 - #153763 (Don't add empty target features for target-cpu=native on macOS)
 - #153432 (Fix some comments about dataflow analysis.)
 - #153529 (Fix LegacyKeyValueFormat report from docker build: pr)
 - #153694 (fix(query): Pass Query Key to `value_from_cycle_error`)
 - #153708 (de-non_const `Iterator` trait methods)
 - #153717 (unused_macro_rules switched used and unused comments)
 - #153736 (add test that an incomplete feature emits a warning)
 - #153748 (editorconfig: css uses tabs)
 - #153750 (rustc-dev-guide subtree update)
 - #153762 (actually make the is-fn test test what it says it tests)
@Zalathar
Copy link
Copy Markdown
Member

@bors try jobs=x86_64-rust-for-linux

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Mar 12, 2026
…hods, r=<try>

de-non_const `Iterator` trait methods


try-job: x86_64-rust-for-linux
@Zalathar
Copy link
Copy Markdown
Member

On closer inspection the error mentions Iterator, so I’ll assume that this PR Is the most likely cause.

@bors r-

@rust-bors rust-bors bot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Mar 12, 2026
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Mar 12, 2026

This pull request was unapproved.

This PR was contained in a rollup (#153767), which was unapproved.

@JonathanBrouwer
Copy link
Copy Markdown
Contributor

@bors r-
@bors try jobs=x86_64-rust-for-linux
#153767 (comment)

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Mar 12, 2026
…hods, r=<try>

de-non_const `Iterator` trait methods


try-job: x86_64-rust-for-linux
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Mar 12, 2026

💔 Test for 4b830c9 failed: CI. Failed job:

@rust-log-analyzer

This comment has been minimized.

@rust-bors

This comment has been minimized.

@Lars-Schumann Lars-Schumann force-pushed the de-non_const-iterator-trait-methods branch from 2960e3a to e141160 Compare March 29, 2026 23:25
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented Mar 29, 2026

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@Lars-Schumann Lars-Schumann marked this pull request as draft March 30, 2026 00:45
@Lars-Schumann
Copy link
Copy Markdown
Contributor Author

@bors try jobs=x86_64-rust-for-linux

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Mar 30, 2026

@Lars-Schumann: 🔑 Insufficient privileges: not in try users

@Lars-Schumann Lars-Schumann force-pushed the de-non_const-iterator-trait-methods branch from e141160 to 42db04e Compare March 30, 2026 01:38
@oli-obk
Copy link
Copy Markdown
Contributor

oli-obk commented Mar 30, 2026

@bors try jobs=x86_64-rust-for-linux

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Mar 30, 2026
…hods, r=<try>

de-non_const `Iterator` trait methods


try-job: x86_64-rust-for-linux
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Mar 30, 2026

💔 Test for ea2c265 failed: CI. Failed job:

@Zalathar
Copy link
Copy Markdown
Member

@bors try jobs=x86_64-rust-for-linux

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Mar 30, 2026
…hods, r=<try>

de-non_const `Iterator` trait methods


try-job: x86_64-rust-for-linux
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Mar 30, 2026

💔 Test for f003781 failed: CI. Failed job:

@rust-log-analyzer
Copy link
Copy Markdown
Collaborator

The job x86_64-rust-for-linux failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
  RUSTDOC H rust/quote/lib.rs
  RUSTDOC H rust/syn/lib.rs
  RUSTDOC H rust/macros/lib.rs
  RUSTDOC H rust/pin-init/src/lib.rs
##[error]error: internal compiler error: compiler/rustc_middle/src/ty/typeck_results.rs:590:9: node HirId(DefId(0:9687 ~ core[ac0c]::iter::traits::iterator::Iterator::advance_by::{impl#0}).9) (type `I::Item`) cannot be placed in TypeckResults with hir_owner DefId(0:9684 ~ core[ac0c]::iter::traits::iterator::Iterator::advance_by)


thread 'rustc' (57219) panicked at compiler/rustc_middle/src/ty/typeck_results.rs:590:9:
Box<dyn Any>
stack backtrace:
   0: std::panicking::begin_panic::<rustc_errors::ExplicitBug>
   1: <rustc_errors::diagnostic::BugAbort as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   2: rustc_middle::util::bug::opt_span_bug_fmt::<rustc_span::span_encoding::Span>::{closure#0}
   3: rustc_middle::ty::context::tls::with_opt::<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}
   4: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_opt<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
   5: rustc_middle::util::bug::bug_fmt
   6: rustc_middle::ty::typeck_results::invalid_hir_id_for_typeck_results::{closure#0}
   7: rustc_middle::ty::context::tls::with::<rustc_middle::ty::typeck_results::invalid_hir_id_for_typeck_results::{closure#0}, !>::{closure#0}
   8: rustc_middle::ty::context::tls::with_context::<rustc_middle::ty::context::tls::with<rustc_middle::ty::typeck_results::invalid_hir_id_for_typeck_results::{closure#0}, !>::{closure#0}, !>::{closure#0}
   9: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_context<rustc_middle::ty::context::tls::with<rustc_middle::ty::typeck_results::invalid_hir_id_for_typeck_results::{closure#0}, !>::{closure#0}, !>::{closure#0}, !>
  10: rustc_middle::ty::context::tls::with::<rustc_middle::ty::typeck_results::invalid_hir_id_for_typeck_results::{closure#0}, !>
  11: rustc_middle::ty::typeck_results::invalid_hir_id_for_typeck_results
  12: <rustc_middle::ty::typeck_results::TypeckResults>::qpath_res
  13: <rustdoc::html::render::span_map::SpanMapVisitor as rustc_hir::intravisit::Visitor>::visit_qpath
  14: rustc_hir::intravisit::walk_where_predicate::<rustdoc::html::render::span_map::SpanMapVisitor>
  15: rustc_hir::intravisit::walk_generics::<rustdoc::html::render::span_map::SpanMapVisitor>
  16: rustc_hir::intravisit::walk_item::<rustdoc::html::render::span_map::SpanMapVisitor>
  17: rustc_hir::intravisit::walk_stmt::<rustdoc::html::render::span_map::SpanMapVisitor>
  18: rustc_hir::intravisit::walk_expr::<rustdoc::html::render::span_map::SpanMapVisitor>
  19: rustc_hir::intravisit::walk_trait_item::<rustdoc::html::render::span_map::SpanMapVisitor>
  20: rustc_hir::intravisit::walk_item::<rustdoc::html::render::span_map::SpanMapVisitor>
  21: rustc_hir::intravisit::walk_mod::<rustdoc::html::render::span_map::SpanMapVisitor>
  22: rustc_hir::intravisit::walk_mod::<rustdoc::html::render::span_map::SpanMapVisitor>
  23: rustc_hir::intravisit::walk_mod::<rustdoc::html::render::span_map::SpanMapVisitor>
  24: rustc_hir::intravisit::walk_mod::<rustdoc::html::render::span_map::SpanMapVisitor>
  25: <rustdoc::html::render::context::Context>::init
  26: rustdoc::formats::renderer::run_format::<rustdoc::html::render::context::Context, rustdoc::main_args::{closure#2}::{closure#0}::{closure#1}::{closure#0}>
  27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<(), rustdoc::main_args::{closure#2}::{closure#0}>::{closure#2}, ()>::{closure#1}, ()>::{closure#0}, ()>
  28: rustc_interface::passes::create_and_enter_global_ctxt::<(), rustdoc::main_args::{closure#2}::{closure#0}>
  29: rustc_interface::interface::run_compiler::<(), rustdoc::main_args::{closure#2}>::{closure#1}
  30: rustc_span::create_session_globals_then::<(), rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustdoc::main_args::{closure#2}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-rustdoc&template=ice.md

note: please make sure that you have updated to the latest nightly

note: please attach the file at `/checkout/obj/rfl/linux/rustc-ice-2026-03-30T07_11_07-57215.txt` to your bug report

note: rustc 1.96.0-nightly (f0037815b 2026-03-30) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z binary_dep_depinfo=y -C panic=abort -C embed-bitcode=n -C lto=n -C force-unwind-tables=n -C codegen-units=1 -C symbol-mangling-version=v0 -C relocation-model=static -Z function-sections=n -C target-feature=-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2 -Z cf-protection=branch -C jump-tables=n -C target-cpu=x86-64 -Z tune-cpu=generic -C no-redzone=y -C code-model=kernel -Z function-return=thunk-extern -Z patchable-function-entry=16,16 -C opt-level=2 -C debug-assertions=n -C overflow-checks=y -Z unstable-options -C unsafe-allow-abi-mismatch=fixed-x18

query stack during panic:
end of query stack
error: aborting due to 1 previous error

make[2]: *** [rust/Makefile:200: rustdoc-core] Error 101
make[1]: *** [/checkout/obj/rfl/linux/Makefile:1858: rustdoc] Error 2
make: Leaving directory '/checkout/obj/rfl/linux'
make: *** [Makefile:248: __sub-make] Error 2
  local time: Mon Mar 30 07:11:08 UTC 2026
  network time: Mon, 30 Mar 2026 07:11:08 GMT
****************************************************************************
To find more information about this job, visit the following URL:
https://rustc-dev-guide.rust-lang.org/tests/rust-for-linux.html

For more information how to resolve CI failures of this job, visit this link.

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

Labels

S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants