Search posts, tags, users, and pages
I am personally very excited for the combination of in-band lifetimes, impl Trait, default binding modes in matches, and non-lexical lifetimes -- these together promise to remove a great deal of “everyday friction” from the code I write. The nice thing about these features is that I think they will make the overall language feel simpler overall, which is a rare thing.
(In terms of "fancier" features, there's lots of nice stuff coming down the pike too -- generic associated types and const generics come to mind as things that I can see myself using regularly.)
I'm excited about all our ergonomic improvements this year, but if I had to pick:
impl Trait -- it was my first RFC! It's been a long road, and is going to be a huge deal.I’m really excited for coroutines, not just for async-await, but for a simple way to define complex state machines. I’ve done some preliminary experiments and I’m pretty sure we could speed up serde deserialization maybe 10-20% by using coroutines for even more optimal buffering.
Non-lexical lifetimes would be nice too. It's not that hard to work around lexical lifetimes, but it'd be nice to avoid that papercut. It is however one of the big complaints I hear from new Rust developers.
Oh, and Macros 2.0. I love doing stupid things with compiler plugins (like stateful, a failed attempt to make a compiler plugin for coroutines). It's going to be so much fun when we have the ability to transform Stable Rust AST.
After custom derive landed in 1.15, I lost my good answer to this question ;)
I'd say the default binding modes in matches, non-lexical lifetimes, and impl trait. The first one is something I run into all the time, the latter are things others run into all the time.