Skip to content

A collection of beginner- and intermediate-level Rust resources

License

Notifications You must be signed in to change notification settings

CLEckhardt/rust_resources

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Rust Resources

This is a work in progress. Have a suggestion? Open an issue!

Why Rust?

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.

New? Start here

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!

  1. Rust book [comprehensive]
  2. Rust by example [comprehensive]
  3. Interactive Rust book [comprehensive, interactive]
  4. Rustlings [interactive]
  5. Rust development classes
  6. Video Rust book [comprehensive]
  7. Rust Cookbook
  8. Learning Rust with entirely too many linked lists
  9. Command Line Apps in Rust

Development tools

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!

Miscellaneous

  • 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

Intermediate/advanced

These resources aren't in a particular order, but delve into the more advanced features or aspects of Rust.

About

A collection of beginner- and intermediate-level Rust resources

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published