Marshall Bowers

Conjurer of code. Devourer of art. Pursuer of æsthetics.

Rust 2020

Wednesday, November 27, 2019
393 words
2 minute read

When Rust put out a call for blogs for 2020 I knew that I wanted to answer. I love pretty much everything about Rust, and I want to be able to use Rust as my tool of choice when building anything. However, right now there is some marked pain when working on certain kinds of projects in Rust.

With that said, I think the theme of a Rust 2021 edition, and what Rust should focus on in 2020, should be Capability.

There are lots of sites that seek to answer the question "Are we X yet?" for Rust. And unfortunately, the answer to that question for most domains is "not quite". While it is possible to build web servers, GUIs, and games in Rust, the ecosystem just isn't quite there yet for the masses.

As someone who has attempted projects in a variety of spaces, so far the only one that has felt really nice is building CLIs in Rust. Crates like clap and structopt are just incredible to use and really make the choice of Rust for building a CLI app a no-brainer.

I want that same feeling I get from building a CLI app to extend to building a web service, a GUI app, a game, or pretty much anything else.

I think that Rust should focus on providing the foundation for users to build any program under the sun in Rust and have a world-class experience while doing so.

What this might look like:

  • Stabilizing nightly features for frameworks like Rocket to go stable
  • Coordinating with working groups to identify what additions or improvements to the Rust compiler would help them advance their goals

Personally, I would love to see higher-kinded types (HKT)—perhaps by adding associated-type constructors—added to Rust, as this would give crate authors a very powerful tool for designing abstractions.

I just wanted to end by saying a big thank you to all the members of the Rust Core Team for all of the hard work that you do and the care with which you shepherd the Rust language and its community.