In recent years, the name Rust has popped up in conversations that, at first glance, had nothing to do with this language. That’s no coincidence. Eye-catching success stories abound—from a critical Discord service rewritten with “10×” performance gains to Dropbox spending four years migrating its desktop sync engine—and Microsoft has begun introducing Rust into Windows components with performance improvements in the 5–15% range and, above all, with the aim of tackling the huge volume of security flaws tied to memory management. At the same time, some voices remind us that not every project needs Rust: the TypeScript team itself chose to port to Go because it was faster and more reasonable for their goals and timelines.
This feature takes a clear, level-headed look at Rust in 2025: why it excites so many people, how it compares with popular alternatives, and, crucially, where it stumbles. No hype—just performance, memory, ergonomics, compile times, ecosystem and the real experience of writing code.
Memory Safety Without a Garbage Collector: The Core Promise
Rust is a systems programming language that promises something that for decades seemed impossible: memory safety without a garbage collector. In languages like C or C++, errors such as use-after-free or double-free are all too common. Those flaws aren’t anecdotal: Microsoft has attributed roughly 70% of its security bugs to problems of this kind.
Languages with a garbage collector (Java, Python, Go, etc.) avoid many of these issues at the cost of adding pauses and some unpredictability to execution. Rust takes another path: ownership and borrowing enforced by a borrow checker that verifies, at compile time, that the program won’t use freed memory or incur data races. If the code violates the rules, it doesn’t compile. The theoretical result: C-class performance, Java-like safety, and a modern level of expressiveness.
Reality Check: Writing Rust Is Different
Developers coming to Rust from GC languages tend to go through a familiar process. At first, the syntax looks approachable, but soon the compiler blocks changes that seem trivial: for instance, holding a reference to an element of a vector and then trying to mutate that vector. The complaint is legitimate. That initial friction forces one to internalize the semantics of ownership, borrowing and lifetimes.
It’s not a small curve: many developers report 3–6 months to feel comfortable with the borrow checker. Along the way, the compiler helps with unusually clear error messages, and the build tool Cargo is widely praised for its simplicity and coherence. Still, not everything is rosy: compile times can grate; even small projects can take 15–20 seconds to compile, which disrupts the rhythm for those used to instant hot reloads.
A Pragmatic Comparison: C, C++, Go, Zig… and Rust
A practical comparison using a small command-line utility in C, C++, Rust, Go, and Zig reveals useful nuances:
- C offers raw speed and total control, at the cost of manual memory management (malloc/free) and the risk of subtle, catastrophic errors.
- C++ adds modern abstractions (vectors, smart pointers), but pays with complexity: there are “six ways” to do almost everything.
- Go opts for simplicity and fast builds, sacrificing some low-level control and, depending on the case, some performance. Debate on how much is lost remains open.
- Zig feels like C with better tooling and compile-time safety, but its ecosystem is still small and the approach very low level.
- Rust aims for the sweet spot: fine-grained control and safety guaranteed at compile time. The toll is fighting the compiler at the beginning and living with slower builds.
The practical consequence: in problems with demanding performance and safety requirements, Rust shines; for rapid prototyping or teams with tight deadlines, it may not be optimal.
Use Cases That Fuel the Enthusiasm
High-impact examples have boosted the language’s reputation:
- Discord rewrote a critical read-state service to eliminate 2-minute GC spikes that froze the app in production. The result was a 10× performance increase and the removal of those pauses.
- Dropbox spent four years rewriting its desktop sync engine to handle hundreds of billions of files. The internal verdict: Rust acted as a force multiplier for the team.
- Microsoft introduced Rust into Windows components, rewriting 152,000 lines in areas like font rendering, reporting 5–15% improvements and, more importantly, progress toward mitigating memory-related vulnerabilities that had weighed on security.
- AWS built Firecracker, its lightweight virtualization engine for serverless, in Rust.
- In web development, new runtimes and frameworks written in Rust have appeared.
- In the CLI tooling world, Rust has powered utilities like ripgrep, fd, and bat, which many users adopt for their speed versus traditional Unix equivalents.
These milestones show that Rust’s value proposition isn’t just theoretical: there are tangible production gains.
Why Not Choose Rust? The Counter-Argument Worth Hearing
Even so, the ecosystem also offers a healthy reminder: not everything needs Rust. The TypeScript team is a telling case. They considered Rust, tried it, and like the language, but porting TypeScript to Rust would have taken years or required leaning on lots of unsafe
code or rolling custom memory-management strategies. They chose Go for timelines and operational simplicity, completing the effort in about a year.
The underlying message is pragmatic: Rust’s fit depends on context. If a project demands speed to market, a small team and a short learning curve, Go may fit better. If the project is built atop a mature C++ ecosystem (e.g., game development), the inertia of libraries and engines looms large.
Put simply: Rust excels at its design goals—safety and performance—but it wasn’t designed to make porting certain Java codebases straightforward. Pretending otherwise leads to frustration and delays that are hard to justify.
Real-World Productivity: What You Gain and What It Costs
What you gain
- Memory bugs that never reach production: the compiler acts as a safety net.
- Helpful error messages: they guide developers toward solutions and turn learning into an investment.
- Cargo and a growing crates ecosystem, especially strong in systems and CLI.
What it costs
- A mental shift: thinking in terms of ownership, borrowing and lifetimes is a paradigm change. It’s not about intelligence or years of experience—it’s about whether your brain clicks with Rust’s model. Some juniors ramp up fast; some seniors stall for weeks.
- Long onboarding (3–6 months): it can create bottlenecks if the organization expects immediate productivity.
- Legacy integrations: bringing Rust into established Java, .NET, or C++ codebases can be onerous without clear interfaces or a compelling need.
- Compile times: 15–20 seconds for small changes alter the iteration cadence, especially for those who rely on hot reload.
Ecosystem: Mature in Systems and CLI; Thinner in GUI and Machine Learning
The Rust ecosystem has matured where its technical proposition fits naturally: systems, CLIs, runtimes, and long-running services. By contrast, graphical UI development and machine learning don’t yet show the same level of maturity. Adoption is uneven, and that matters when you evaluate libraries, docs and examples.
Is Rust “the Most Admired Language”? What That Means in Practice
Rust’s admiration isn’t just a vibe; developer surveys have repeated it for years. In day-to-day work, that often means that once teams get past the initial learning curve, they feel supported by the compiler, appreciate Cargo’s coherence, and value living with less fear of “that impossible memory bug” that appears at 6 p.m. on Friday.
There’s another side: frustration with slow builds and with the strong opinions of the tooling (Cargo is deliberately more rigid than ultra-flexible build systems). But for a growing share of teams, the peace of mind of avoiding certain classes of errors more than compensates.
Where Rust Is a Great Idea… and Where It Might Not Be
Great idea when:
- You’re building security-sensitive services and long-running systems.
- There’s hard performance pressure and every millisecond counts.
- You value catching errors at compile time over prototyping speed.
Maybe not when:
- The goal is rapid prototyping and weekly market iterations.
- The team is under tight deadlines and can’t absorb 3–6 months of learning.
- The existing codebase and ecosystem (libraries, engines, tools) push you toward another technology.
The Tempered Conclusion: Less Hype, More Use-Case
Rust isn’t smoke and mirrors. It’s a solid technology solving real problems at scale. The performance and security gains in its case studies are measurable. But technology adoption isn’t zero-sum: different problems need different tools, and organizational context matters more than any isolated benchmark.
The relevant question isn’t “Should I use Rust because everyone else is?” but “What problem am I solving and what trade-offs am I willing to accept?” If the answer demands low-level control, memory safety without pauses, and long-term robustness, Rust deserves a spot on the shortlist. If the real challenge is shipping faster, integrating with specific legacy stacks, or reducing onboarding risk, Rust may not be the best first choice, however excellent it may be on its own terms.
Epilogue: What This Hype Cycle Leaves Behind
The enthusiasm for Rust has also put memory safety at center stage. A giant like Microsoft embracing Rust for Windows components and floating the idea of curbing new C/C++ projects is, in itself, a cultural shift. Teams like TypeScript explaining transparently why Rust wasn’t their fit is healthy too: maturity is choosing well, not choosing what’s fashionable.
In short, Rust is earning its place wherever its unique combination of performance, safety and reliability delivers clear business value. It doesn’t need to be the universal choice to be the right choice in many scenarios.

Frequently Asked Questions (FAQ)
Why can Rust prevent around 70% of common security flaws?
Because its ownership and borrowing model stops typical memory-management errors (use-after-free, double-free, data races) at compile time. Programs with memory-safety violations simply won’t compile, drastically reducing that class of vulnerabilities.
If Rust is so safe and fast, why did a team like TypeScript choose Go instead?
Because of timelines and technical fit. Porting their codebase to Rust would have taken years or required heavy reliance on unsafe
code and custom memory management. With Go, they reached their goal in about a year. The best language is the one that solves the problem with the time and team you have.
What kinds of projects deliver the highest ROI with Rust?
Security-critical services requiring sustained performance (e.g., lightweight virtualization, system components, sync engines, high-demand backends). Also command-line tools where speed changes developer workflows.
What should a new team weigh before betting on Rust?
Three factors:
- A 3–6 month learning curve to get fluent with the borrow checker.
- Integration with legacy stacks (Java, .NET, C++) and the cost of bridges.
- Development cadence versus compile times of 15–20 seconds even for small changes. If that cost is acceptable in exchange for safety and performance, Rust fits; if not, consider alternatives.