Proposal
In #285 it was proposed, and in implemented in rust-lang/rust#73503, to change Predicate to move the Binder(s) out of the variants and into an outer PredicateKind::ForAll, with an additional no-binding PredicateKind::Implies. The overall motivation here was based around 1) matching Chalk more closely and 2) enabling GATs. In Chalk, we've actually since removed the Implies variant (rust-lang/chalk#514). Additionally, in rust-lang/rust#76814, I've found that the ForAll/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 make Predicate just container a Binder<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:
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.
Proposal
In #285 it was proposed, and in implemented in rust-lang/rust#73503, to change
Predicateto 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 theImpliesvariant (rust-lang/chalk#514). Additionally, in rust-lang/rust#76814, I've found that theForAll/Impliessplit 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/Impliesand makePredicatejust 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 mergeon 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.