Tracking Issue for removing impl const
and ~const
in the standard library #110395
Description
This is a tracking issue for removing impl const
and ~const
in the standard library. This is carried out so that migrating to a new implementation under keyword generics can go more smoothly. See this Zulip thread for discussion around this operation.
For temporary preview of the effects rewrite, add feature(effects)
to your crate code. Most bugs/misbehaviors are known so consider opening a thread on the project-const-traits stream on Zulip before opening an issue.
About tracking issues
Tracking issues are used to record the overall progress of implementation.
They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature.
Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.
Steps
- Remove unstable features that currently use const traits: Rm const traits in libcore #110393
- Remove logic in the compiler around const traits to allow a better implementation
- Land a better implementation in the compiler (see previous attempt at reimplement
~const Trait
bounds via a fourth kind of generic param #101900).- Effects/keyword generics MVP #113210
- Effects: don't print
host
param in diagnostics #114203 - correctly lower
impl const
to bind to host effect param #114545 - Implement fallback for effect param #115727
- treat host effect params as erased in codegen #115817
- Canonicalize effect vars in new solver #115850
- Fallback effects even if types also fallback #115859
- Ensure that
~const
trait bounds on associated functions are in const traits or impls #116210 - Hide host effect params from docs #116670
- Duplicate
~const
bounds with a non-const one in effects desugaring #116756 - Don't compare host param by name #116870
- Use elaboration to turn ~const bounds into non-const bounds #116872
- Deny providing explicit effect params #117171
- Deny more
~const
trait bounds #117817 - Add
Span
toTraitBoundModifier
#118245 - Remove a hack for effects #118246
- effects: Run
enforce_context_effects
for all method calls #118282 - Fix
Deref
args when#[const_trait]
is enabled #118386 - Remove
#[rustc_host]
, use internal desugaring #118605 - Use default params until effects in desugaring #118608
- Implement new effects desugaring #120639
- Restore unstable features using const traits