If you'd like to learn more about what's in Rust 2021, there will eventually be a blog post when it hits stable, but the edition guide has the details: <a href="https://doc.rust-lang.org/nightly/edition-guide/rust-2021/index.html" rel="nofollow">https://doc.rust-lang.org/nightly/edition-guide/rust-2021/in...</a><p>This edition is deliberately "small" compared to Rust 2018, which was very large. That doesn't mean it wasn't a ton of work, as you can obviously see from the number of people and work done in this post, but it is more "quality of life changes" than "major new syntax and huge new features." More "stuff I expected to work that used to not work now works" and less "I need to learn this new shiny thing." Those of you who have been waiting for Rust to slow down a bit, this is one example of how that's happening.
I <i>love</i> rust and working in rust has been an incredible experience for me, but I'm probably a really rare case in that I personally hope that the next edition (2023?) does a little weeding of what's included in the prelude rather than being mostly additive.<p>Specifically, the various magical impls of From are a constant thorn in my side when writing practical rust. Specifically:<p>- Error messages if you screw something up with TryFrom tell you your problem was you implemented From<> wrong because of the magical `impl TryFrom<T, Infallible> for T where T: From` which is confusing as hell. I'm of the opinion this should be removed, and maybe add a macro for helping to implement it if you need/want that.<p>- The magical behaviour of `collect` when given a collection of results to produce a result with a collection causes me to work harder overall because it confuses the type inference to the point that you need to throw a type declaration into the most awkward places. This also happens because of an `impl From` that you can't get rid of. Sure, it's nice that <i>occasionally</i> it does something useful quickly and cleanly, but then it makes things confusing the other 80% of the time. Should just be a separate function.
The 2021 edition, while a breaking change, will affect only a tiny amount of code. Most crates will be able to put `edition = "2021"` into Cargo.toml without any other modiciations. Only some relatively minor parsing and semantics changes were introduced. It's not nearly as big as the 2018 edition, which brought big changes to the module and macro system.<p>Mostly some quality of life improvements.<p>Also note that the Rust compiler remains backwards compatible and continues to support all previous editions. (well, it's only 2015 and 2018 for now)<p>Lot's of work is put into the compiler, but a lot of it is refinement and plumbing at the moment. Big feature work has slowed down a lot (which is probably a good thing).<p>But as some positive news: GAT (generic associated types, a more restrictive variant of higher kinded types) are apparently nearing completion, which can also unblock some very important improvements for the async world (eg `async fn` in traits).<p>I do still really miss some big features though: async in traits, a more flexible dynamic trait system (multi-trait objects, downcasting), generators and specialization.