Feel free to add anything!
General learning resources
Rust course from Richard Feldman
He’s known from his work in the Elm community.
“The Book”
A book about Rust also apparently referred to as “The Book” in the Rust community.
Youtube Series going through “The Book”
A youtube series going through the above book.
“The Rust Programming Language”
by Steve Klabnik and Carol Nichols
Rustlings
Rustlings is an interactive set of exercises to get hands on practice while learning Rust. Each exercise has a compiler error or a failing unit test. Your task is to go through and fix things. It gives you hints if you get stuck.
Learn Rust in Y minutes
A very dense & quick overview of lots of Rust syntax & more.
Traits
dyn Trait
and impl Trait
can be new/confusing syntax and is fairly subtle:
Smart Pointer Types
https://doc.rust-lang.org/1.5.0/book/choosing-your-guarantees.html
Module System
Async
Understanding Async (Rust Future
s) better by building an executor for them:
https://rust-lang.github.io/async-book/02_execution/04_executor.html
A post about from Tokio’s author about its executor:
Async recursion isn’t possible out-of-the-box. There exists a macro to help with that:
async_recursion
package
By default async fn
s in traits are disallowed:
“why async fn in traits are hard”
Recursion
If you’re used to functional programming languages and used to creating recursive data structure & recursive functions for working with them, you might be surprised to hear that in Rust recursion is not discouraged.
Here’s a discussion about representing an AST and its functions in Rust in the help forum that may be helpful for people coming from e.g.Haskell:
Linked Lists
Linked lists in Rust are discouraged, just like recursion.
There’s fringe cases for when they’re useful, but it’s somewhat hard to do in rust.
This book goes over how that could work and teaches you a lot about different kinds of smart pointers in the process:
Sizedness in Rust
Rust types can have their “size” (in bytes) known at compile time, or they may be unsized.
Read this if you come across “x doesn’t have size known at compile time” errors or “?Sized
” bounds and don’t know what these mean:
Finding good rust stuff
For crates, there’s Crate List - Blessed.rs - A list of popular crates organized by use case.
@pinkforest also started a meta awesome list, sort of a “Rust Awesome Awesome list”: GitHub - RustAU/Awesome-Awesome: The Awesome list of Awesome's
See also her reply to this topic for more great info on various recommended traits & learning material: Rust Language Resources - #13 by pinkforest