- GATs are moving towards stabilization. Major blockers:
- Since we landed various improvements, jackh726 has been monitoring bugs, many of them are general issues with rustc that come up somewhat more often for GATs
- Implement default inference solution
- Settle question of whre clause syntax
- Finish explainer and issue triage
The general plan is to push Generated Associated types towards stabilization, but with the expectation that the current form has ergonomic pitfalls. You can think of it as an MVP to expose functionality. Towards that end we aim to write an explainer that highlights the current state of the feature, what it can do, and what it can't.
Last month we discussed a potential defaulting scheme for
where Self: 'a annotations. There were some unknowns, such as the "false default" rate -- i.e., cases where the default would trigger but you don't want it. To help gain more data, the plan is to implement the logic for adding a default, but instead of adding a default, we will require that the default be written explicitly. You can think of it as an extended "well-formedness" requirement.
This preserves future flexibility:
- Remove the error altogether
- Add as a lint with a fix
- Simply add the where clause by default, perhaps with an opt out
The error message for this default will include instructions on (a) known workarounds if it is not desired and (b) an issue where folks can comment if they have codebases where the default was not helpful. This should enable us to gain some data.