MVP Stabilization
We are currently focused on stabilizing a Minimum Viable Product form of GATs in rust-lang/rust#96709. That's a long github thread, so this page summarizes the key points to understand.
- Understanding GATs in general:
- The explainer covers the design that is being stabilized in tutorial form.
- The design patterns section covers ways that GATs used in the wild.
- The rough edges section explains some of the ways GATs are currently difficult to use; the shiny future section contains speculation on how to address those.
- Highlights from the thread:
- The stabilization report lays the groundwork.
- This summary comment identified the core concerns. We have detailed them here in more depth, and provided some counterpoints:
- GATs permit complex patterns that will, on net, make Rust harder to use
- Stabilizing GATs with lifetimes only would help prevent this
- GATs are useful but the current state is too rough and should not be stabilized
- Given the number of papercuts, how do we know that the current MVP is forwards compatible with the fixes?
- One detailed question was raised, about the specifics of our rules for required bounds:
- Current status:
- We are currently awaiting checkboxes to move to final comment period. The fcp merge comment includes a detailed write-up of the questions being considered by the lang and types teams.
Places where conversation has been happening?
Want to read the firehose? Check out these places where conversation has been happening:
- rust-lang/rust#96709 issue thread
- Zulip thread on GATs and complexity
- Zulip thread on "type-GATs vs lifetime-GATs"
- Zulip thread on renaming
for
-- side topic that spun out