---
# System prepended metadata

title: A retrospective for the traits working group in 2021

---

# A retrospective for the traits working group in 2021

Another year gone by, seemingly in the blink of an eye. However, as you'll see in this post, it's been a productive year for the traits working group. Now, it's probably been a bit since you've heard what we've been up to: our last blog post was at the end of our third sprint of 2020, back on [July 17 of last year](https://blog.rust-lang.org/inside-rust/2020/07/17/traits-sprint-3.html). This post will mainly focus on the work done in 2021, but I will do my best to call out notable points from the latter half of last year.

There will be roughly two kinds of work highlighted here: that which falls under a lang team [initiative](https://lang-team.rust-lang.org/initiatives.html) and that which doesn't, but aligns with longer-term goals of the traits working group. This post serves two roles: first, to highlight and thank the amazing people who have spent countless hours making Rust a better language; and, second, to help *you* get a sense of the progress being made, to get you excited for the things coming in the future, and maybe even encourange you to come help out yourself. However, as a tradeoff, this post will be sparse on details of the work itself; if you're interested, I urge you to either look through the cited pull requests or issues, to browse the initiatve repositories, or to come join us on [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/144729-wg-traits).

If you find something I've missed here, or any other mistake, please feel free to message me on Zulip; I really don't want someone to feel like I've left them out intentially and I want them to get the credit they deserve. With that being said, let's get started.

## Initiatives

For each of these initiatives, I'll give a brief introduction as to what the initiative is for, as well as list the people who have contributed (also listing pull requests made and issues fixed) to each. Importantly, there are certainly going to be people that I miss here, either because they haven't *directly* contributed code (but have been involved in discussion or design) or because they help out tangentially (making PR rollups, adding regression tests, etc.). I do want to specifically thank them now; that work is important too.

I also want to specifically call out one particular person who will be underrepresented below, but deserves recognition: [Niko Matsakis](https://github.com/nikomatsakis). Though he hasn't made many pull requests for these, he serves as the lang team liason for basically all of them and is instrumental in design and implementation discussions for this work.

### Generic associated types (GATs)

[Link to initiative](https://rust-lang.github.io/generic-associated-types-initiative/)

I won't go into what GATs are here, since I wrote a [blog post](https://blog.rust-lang.org/2021/08/03/GATs-stabilization-push.html) in August with a brief overview. However, in a few words: it's a really neat and powerful language feature that is nearing stabilization. Since the blog post in August, there have been many bug and diagnostic fixes made. We missed the "next couple months" hope for stabilization from the blog post, but that's okay. Ultimately this only results in a better feature come stabilization soon™.

#### Contributions

[b-naber](https://github.com/b-naber)
PRs: #79554, #82272, #90801 Issues: #67510, #68648 #68649, #68650, #68652, #74684, #76535, #79422, #80433, #81801, #81961, #81862, #84439, #90612

[lcnr](https://github.com/lcnr)
PRs: #80558 Issues: #69184, #80766

[BoxyUwU](https://github.com/BoxyUwU)
PRs: #81911 Issues: #75415, #79666

[Jack Huey (jackh726)](https://github.com/jackh726)
PRs: #86993, #87244, #87281, #84622, #87478, #85499, #89914, #87900, #88846, #88441, #89823, #91849, #89970, #88336, #87478, #84623, #90076, #90887, #91853, #92118, #92191 Issues: #76407, #76826, #78113, #81487, #81823, #84931, #85921, #86787, #87429, #87762, #88360, #88459, #89639, #91036, #90888, #91348 

[Giacomo Stevanato (SkiFire13)](https://github.com/SkiFire13)
PRs: #85375 Issues: #85347

[Yuki Okushi (JohnTitor)](https://github.com/JohnTitor)
PRs: #86505 Issues: #86483

[Oli Scherer (oli-obk)](https://github.com/oli-obk)
PRs: #89229 Issues: #87258, #88595

[Audun Halland (audunhalland)](https://github.com/audunhalland)
PRs: #89341 Issues: #89188

Unattributed
#79949, #79636, #78671, #70303, #70304, #71176, #81712, #79768, #87750, #88287, #88405, #90014

### Impl traits (TAITs)

[Link to initiative](https://rust-lang.github.io/impl-trait-initiative/)

#### Contributions

[Santiago Pastorino (spastorino)](https://github.com/spastorino)
PRs: #86118, #87141, #87501
Issues: #73481, #77179, #85113

[Oli Scherer (oli-obk)](https://github.com/oli-obk)
PRs: #87287 #89229, #87107, #87200, #87287, #82898, #87587, #89045, #89024, #90376
Issues: #74280, #88595

[b-naber](https://github.com/b-naber)
PRs: #85755
Issues: #83190, #78450

[tmiasko](https://github.com/tmiasko)
PRs: #81008
Issues: #80998

[Esteban Kuber (estebank)](https://github.com/estebank)
PRs: #83954
Issues: #83613

[Niko Matsakis (nikomatsakis)](https://github.com/nikomatsakis)
PRs: #84701 #86437

Unattributed
#63355, #63591, #65384, #69323, #86201, #88287, #90014

### Dyn upcasting

[Link to initiative](https://rust-lang.github.io/dyn-upcasting-coercion-initiative/design-discussions/)

#### Contributions

[Charles Lew (crlf0710)](https://github.com/crlf0710)
PRs: #86264, #86291, #86461, #86475, #88135, #90536 Issues: #89190, #86324, #90177


### Negative impls

[Link to initiative](https://rust-lang.github.io/negative-impls-initiative/)

#### Contributions

[Santiago Pastorino (spastorino)](https://github.com/spastorino)
PRs: #90104

## Other work

### Projection caching

Aaron1011: #85382, #85868, #88945, #88994, #89125, #89831, #90423, #92041
lcnr: #84944
the8472: #91186

### Normalization under binders

jackh726: #85499, #90801, #90017, #89285, #88441, #86993

### Tracking binders

jackh726: #76814, #83870, #83944, #84377, #84559

### Chalk

0xflotus, Areredify, AzureMarker, HKalbasi, JakobDegen, LeSeulArtichaut, Veykril, basavesh, crlf0710, davidbarsky, detrumi, ectastic-morse, eggyal, ehuss, firefighterduck, flodiebold, henrikhorluck, jackh726, lf-, matthewjasper, memoryruins, nikomatsakis, nrc, pierwill, scalexm, spastorino

Aaron1011, daboross, josh65536, memoryleak47, nathanwit, super-tuple, vandenheuvel