- Yet Another Rust Resource (YARR!)
- the best learning resource I know of for Rust beginners
- The Rust Programming Language AKA the Rust Book
- Brown University's version of the Rust Book
- spruced up with visualisations and a whole lot of interactive quizzes, in particular IRT ownership and UB
- Learn Rust with Entirely Too Many Linked Lists
- A great way to delve deeper into the language's semantics, and a very fun read :-)
- Learning Rust by QuineDot
- particularly helpful/enlightening on borrows/lifetimes and
dyn Trait
- particularly helpful/enlightening on borrows/lifetimes and
- Rust for Rustaceans
- std's doc
- The Little Book of Rust Macros
- Rust by Example (browser/playground-based)
- best read in tandem with QuineDot's Notes
- Rustlings (local install)
- 100 Exercises To Learn Rust
- offers a gentle intro to systems programming concepts
- longer, more life-like examples than Rustlings and RBE
- covers Tokio
- Rust by Practice
- Exercism's Rust track
- MacroKata
macro_rules!
only as of this writing
- Procedural Macros Workshop
- Many of Rust's FP-supporting features and idiosyncracies are nicely outlined in:
- The Pain Of Real Linear Types in Rust
- More on affine typing in Rust
- Defaults Affect Inference in Rust: Expressions Instead Of Types
- Rust Playground
- very full-featured
- tools incl.
Clippy
,rustfmt
,Miri
and macro expansion (nightly only) - supported output formats incl. asm, wasm and Rust's various IRs
- only really lacks a REPL :-)
- tools incl.
- very full-featured
- bacon
- featureful and ergonomic background code checker
- cargo-expand
- outputs the exansions of the current crate's
macro_rules!
s and#derive
s
- outputs the exansions of the current crate's
- pest parser
- Rayon
- work-stealing data-parallelism library in the vein of Cilk / OpenCilk
- cf. the Rust + Cilk extension (work in progress)
- work-stealing data-parallelism library in the vein of Cilk / OpenCilk
- SQLx
- hyper
- Crossbeam
- various tools for concurrent programming, including MPMC channels
- the project's wiki incl. a list of (non-Rust specific) resources on concurrent programming & related topics
- youki
- implementation of the OCI runtime-spec written in Rust
- user/developer doc
- rstest
- test framework that provides proc macros to make writing fixtures and table-based tests easier
- Mockall
- mocking lib - the automock macro is particularly convenient
- Criterion
- microbenchmarking lib inspired by its Haskell namesake
- Property-based testing crates:
- proptest is inspired by Python's Hypothesis
- QuickCheck is similar to its Haskell namesake
- differences between
proptest
andquickcheck
:
- cargo-fuzz
- CLI front-end for libFuzzer
- Property testing and fuzzing compared and contrasted:
- Embedded Rust doc
- Embassy
- async Rust for embedded
- Incomplete/not necessarily up-to-date lists of OSes written (for the most part) in Rust:
- Rust OSDev
- publishes monthly updates dedicated to OS development in Rust
- CharlotteOS
- Hermit for Rust
- unikernel
- Rust for Linux
- Redox OS
- The Rust Reference
- Raph Lieven's Container Cheat Sheet
- Rustonomicon
- The rustc Book
- Rust Compiler Development Guide
- DSTs Are Just Polymorphically Compiled Generics
- Rust Atomics and Locks
- AtomicUsize, Mutex, and interior mutability
- How to Code It
- Modular Errors in Rust
- Effective Rust
- The Rust Performance Book
- Nesting Allocators
- Circular References
- safe & unsafe Rust compared w/ Go and Zig
- Command Line Applications in Rust
- provides a good introduction to the topic, with the first part being a hands-on tutorial
- Rain's Rust CLI recommendations
- work in progress as of this writing
- Beyond Ctrl-C: The dark corners of Unix signal handling
- Useful Crates:
- clap - argument-parsing library packed full with features
- the doc includes helpful examples
- log provides a logging façade for which many adapters exist
- clap-verbosity-flag integrates with clap and log to provide a quick and easy way to control log levels via flags
- indicatif offers progress bars and spinners
- clap - argument-parsing library packed full with features
- Asynchronous Programming in Rust - AKA the Async Book
- Work-stealing & Share-nothing
- Async: What is blocking?
- Actors with Tokio
- Tree-Structured Concurrency
- Why Async Rust
- goes into a lot of detail about async Rust's internals, their motivations and ramifications
- Cancellations:
- Popular Async runtimes:
- Tokio and the Tokio stack are the de-facto standards
- async-std aims to offer "an async version of std"
- smol aims to be small and fast
- Datadog's Glommio leverages io_uring (so is Linux-only)
- rustwasm Website and GitHub repo
- rustwasm doc
- the Rust and WebAssembly book provides a natural starting point w/ both tutorial and reference sections
- wasm-bindgen guide
- wasm-pack book
- rustwasm doc
- Rustls - TLS lib written in Rust
- native-tls
- abstracts over OS-specific crates that provide bindings for said OSes' native TLS libs
- powers tokio-native-tls
- Comparisons between Rustls and native-tls: