Back

ranger-ross.github.io

The Evolution of Rust

5/3/2025Updated 3/12/2026
https://ranger-ross.github.io/blog/evolution-of-rust/

However, Rust is not all sunshine and rainbows. There are real pain points that need to be addressed if Rust wants to compete with other popular programming languages. Many of these pain points are well known (slow compile times, steep learning curve relative to other languages, etc) and I do not have much to add. But I do want to explore a topic that is less talked about but is very important in my mind. … ## Onboarding Friction Rust has a reputation for being difficult to learn/use compared to “higher” level languages like Javascript and GoLang. I feel this is a bit overblown, especially for modern Rust. Personally I find that I am nearly as fast if not faster in coding in Rust as I am in other languages. However, I did find the learning experience quite difficult compared to other languages. … Every time we add a new keyword it adds more things for the user to be familiar with to understand what a program does. The Rust type system gives the user many ways to express their problem, which is great but comes with the drawback of increasing burden to understand code that you did not write. I sometimes feel this in code reviews when the author uses a syntax that I do not commonly use. … I find that I often desire improvements to existing Rust features rather than new features entirely. A great example of this is the “Async Rust”. Async Rust is not a new feature, but it still does not feel “complete”. Async traits are still not dyn comptaible without using async_trait, Async closures (this was stabilized in Rust 1.85), Async Drop is still unstable. In 2025, I am the most excited about the project goal to refine async rust. ## Tooling Features Until now, I have been primarily talking about language features and not the greater Rust ecosystem. I have a very difficult perspective on adding new features to tools in the Rust ecosystem. Above I argue that introducing language features make the language more complex and introduces development friction when working in a team. For tooling features, this usually does not apply. For example, `cargo build` hides a lot of the complexity of interacting with `rustc` and makes Rust development vastly more approachable. Most tooling features reduce the complexity of Rust users need to deal with on a daily basis.

Related Pain Points3