This is a work in progress. Have a suggestion? Open an issue!
There are a lot of reasons you might want to learn and use Rust. I've found they vary across people and organizations, and they change over time and with more experience. I've linked some discussions of "why Rust?" below; however, given this simple question forms a expansive and nuanced topic, these are simply a few perspectives.
These focus more on "why Rust?" in a professional context. On a personal level, "why Rust?" is really up to you. Talking to other folks on the Rust-learning journey can help bump your inspiration and motivation. But if you are struggling to come up with a reason besides "all the cool kids are doing it and I don't want to be left out," don't sweat it and go spend your time on something you enjoy more. Rust will still be here if you want to come back to it.
Install Rust here.
This list is sorted by how broadly helpful I think these resources could be, i.e. resources that more folks find helpful are listed higher up. We all learn differently and have different backgrounds, so use whichever work for you.
I'd recommend starting at the top of this list - if something isn't working for you, move on to the next one. Or pick the one that sounds the most interesting (though I'd recommend starting with a comprehensive resource).
This is just my take. Have a suggestion? Open an issue!
- Rust book [comprehensive]
- Rust by example [comprehensive]
- Interactive Rust book [comprehensive, interactive]
- Rustlings [interactive]
- Rust development classes
- Video Rust book [comprehensive]
- Rust Cookbook
- Learning Rust with entirely too many linked lists
- Command Line Apps in Rust
One great thing about Rust is that it is easy to use without an IDE. The tooling provided with the language works out-of-the-box and enables you to be productive quickly.
The two main tools that come with Rust are
rustup
and
cargo
. rustup
manages your Rust
toolchain and versions, plus many other tools. cargo
is Rust's build system,
package manager, and a simple interface to all sorts of great features and
tools. It's worth taking a look at the cargo
book, but also note that cargo can be
extended via a wide range of
plugins and
stand-alone tools you can install via cargo install <tool>
. Building,
checking, testing, benchmarking, linting, formatting, dependency analysis,
auditing, fuzzing, and more all happen through simple cargo
commands.
The most common IDEs/editors for Rust are VSCode, vi/vim/neovim, or a JetBrains IDE (Rust Rover or another IDE with a Rust plugin). rust-analyzer is the official Rust language server and is easy to install.
Rust has a default formatter,
rustfmt
. Unlike other languages,
there isn't a popular alternative - it is widely used and generally considered
"the" formatter. rustfmt
runs on the entire project via the cargo fmt
command, but you can configure your editor to run it on the current file only.
rustfmt
is conveniently installed and updated automatically via rustup
.
clippy
is Rust's default linter
and is also automatically managed by rustup
. It has preset levels to choose
from and is highly customizable. Using clippy
can be a great way to learn how
to write idiomatic Rust code!
- This Week in Rust - The official unofficial newsletter
- Find Rust communities on discord, redit, meetup, the-platform-formerly-known-as-twitter, etc. - lots of resources
These resources aren't in a particular order, but delve into the more advanced features or aspects of Rust.
- The Rustonomicon - Unsafe Rust
- Little book of Rust macros
- The Rust Reference - The technical description of the Rust language
- RFC book - Active and historical Rust RFCs; useful for better understanding specific features and design decisions
- Jon Gjengset's channel
- Rust for Rustaceans
- Rust atomics and locks - Low-level concurrency in Rust
- withoutboats blog