The closer · the map you now hold
That was the whole bet of this guide: you don't need to relearn programming to write Rust, you need to remap what you already know. If you've read this far, the map is drawn. Here's the through-line and where the road goes next.
Strip away the syntax and almost everything here was a translation of a habit you already had. Strong types, non-nullable references, async/await, generics with constraints, results over exceptions — you'd been reaching for these in C# for years. Rust just makes them the default and lets the compiler hold you to them.
Ownership and borrowing is the only concept with no C# counterpart — a garbage collector that runs at compile time and then disappears. Everything else is "C# with a stricter type system and no null." If one thing earns a second read, it's that. The rest you already half-knew.
You have the map; now walk the territory. The canonical free resource is "The Rust Programming Language" (everyone calls it "the book"), and rustlings is a set of small compiler-driven exercises that drill the borrow checker into muscle memory faster than reading does.
The crates you'll meet on day one of real work:
| Crate | For | C# you already know |
|---|---|---|
serde | (de)serialization, JSON and more | System.Text.Json |
thiserror / anyhow | typed library errors / catch-all app errors | custom exceptions / top-level catch |
tokio | the async runtime | the CLR thread pool + scheduler |
criterion | statistics-driven benchmarks | BenchmarkDotNet |
Make cargo fmt and a clean cargo clippy part of "done" from the start — they teach idiom while you work, the way a strict reviewer would. Treat the compiler's complaints as suggestions to borrow rather than clone, and you'll write Rust that reads like Rust.
Good Rust isn't about clever tricks — it's pushing invariants into the type system until wrong code simply won't compile. That's the same instinct that already had you reaching for strong types and non-nullable references in C#, taken all the way. You'll fight the borrow checker for a week, then stop noticing it.