I can't keep up with idiomatic Rust
I&#x27;ve been meaning to write a blog post on this topic. Maybe I&#x27;ll do it tomorrow. But, I&#x27;ve been thinking about this question too, or at least a related one: how many new features does Rust get, and how often does it get them? I&#x27;d like to bring some data to this discussion.<p>In 2019, we had eight releases: 1.32 to 1.40.<p>- 1.32: one language adjustment, finishing off previous module work<p>- 1.33: const fn can do a few more things<p>- 1.34: you can do a bit more with procedural macros<p>- 1.35: a few minor details around closures<p>- 1.36: NLL comes to Rust 2015. Not really a new feature so much as backporting it to an older edition.<p>- 1.37: you can #[repr(align(N))] on enums<p>- 1.38: no real language changes<p>- 1.39: async fn! some adjustments to match. Some more borrow checker adjustments.<p>- 1.40: #[non_exhaustive]. The 1.39 borrow checker adjustments are ported to an older edition. Macros can go in a few more places.<p>Really, 1.39 was a huge release, and other than that... all language changes were very minor, mostly sanding off some edge cases, making some things more orthogonal, stuff like that.<p>Most releases these days add some standard library APIs, maybe we have some toolchain improvements... but for all of 2019, we had one feature I&#x27;d call truly major.<p>I suspect that things were a lot more hectic previously, but the language has slowed way, way down recently. We have had two releases so far this year, and I would argue that the only real language feature was an expansion around match patterns. Which again, isn&#x27;t so much a new feature as it is adding a little bit to an old one.<p>Churn is real. It&#x27;s important to keep in mind. We&#x27;ve said for a very long time that Rust&#x27;s churn rate would slow down. It&#x27;s really pretty low at this point. Or at least, in the language.<p>One person on the lang team writing two blog posts fleshing out an idea does not mean the sky is falling.