Remove PredicateKind in favor of only Binder<PredicateAtom> #397
Labels
major-change
A proposal to make a major change to rustc
major-change-accepted
A major change proposal that was accepted
T-compiler
Add this label so rfcbot knows to poll the compiler team
Proposal
In #285 it was proposed, and in implemented in rust-lang/rust#73503, to change
Predicate
to move theBinder
(s) out of the variants and into an outerPredicateKind::ForAll
, with an additional no-bindingPredicateKind::Implies
. The overall motivation here was based around 1) matching Chalk more closely and 2) enabling GATs. In Chalk, we've actually since removed theImplies
variant (rust-lang/chalk#514). Additionally, in rust-lang/rust#76814, I've found that theForAll
/Implies
split actually does make some things more complicated w.r.t. supertrait enumeration and such.This proposal essentially aims to effectively remove the distinction between
ForAll
/Implies
and makePredicate
just container aBinder<PredicateAtom>
always. This again more closely matches current Chalk.This is already implemented in rust-lang/rust#80679 (modulo a bug).
Mentors or Reviewers
@lcnr and @nikomatsakis to review
Process
The main points of the Major Change Process is as follows:
@rustbot second
.-C flag
, then full team check-off is required.@rfcbot fcp merge
on either the MCP or the PR.Comments
This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.
The text was updated successfully, but these errors were encountered: