Appendix C: Further Resources
A curated collection of resources for continuing your Rust journey, organized by category.
Official documentation
Section titled “Official documentation”-
The Rust Programming Language: The official book, commonly called “the Book.” Covers the language from basics through advanced topics. Free and regularly updated.
-
Rust Reference: A detailed reference for Rust’s syntax, semantics, and memory model. More precise than the Book, useful when you need definitive answers about language behavior.
-
Rust by Example: Learn Rust through annotated, runnable examples. Each concept is illustrated with minimal code that you can modify and run in the browser.
-
Standard Library Documentation: Comprehensive API reference for the standard library. The documentation is excellent – many entries include usage examples and links to related items.
-
The Cargo Book: Reference for Cargo, Rust’s package manager and build system. Covers manifest format, dependency management, workspaces, and custom build scripts.
-
Rust Edition Guide: Explains the differences between Rust editions (2015, 2018, 2021, 2024) and how to migrate between them.
Learning resources
Section titled “Learning resources”-
Rustlings: Small exercises that guide you through reading and writing Rust code. Covers the core language features progressively, with compiler-driven hints to help you fix each exercise.
-
Exercism Rust Track: Practice problems with mentor feedback. The exercises progress from simple to complex, and each one is designed to teach a specific language feature or idiom.
-
Comprehensive Rust by Google: A multi-day course originally developed for Google engineers. Covers Rust fundamentals, error handling, unsafe code, concurrency, and Android-specific topics. Well-structured for self-study.
-
Rust Design Patterns: A catalog of idiomatic Rust patterns, anti-patterns, and idioms. Useful once you know the basics and want to write more natural Rust code.
-
The Rustonomicon: The “dark arts” of unsafe Rust. Covers raw pointers, transmute, drop semantics, and other topics you need to understand for FFI and low-level programming.
Community
Section titled “Community”-
Rust Users Forum: The official forum for questions, discussion, and announcements. Welcoming to beginners and a good place to ask questions that are too open-ended for Stack Overflow.
-
Rust Subreddit: Active community for news, project announcements, and discussion. A good source for staying current with the ecosystem.
-
Rust Discord: Real-time chat with dedicated channels for beginners, help, and specific topics like async, WebAssembly, and embedded development.
-
This Week in Rust: A weekly newsletter summarizing notable changes, new crates, RFCs, upcoming events, and community blog posts. The best way to stay informed about the ecosystem.
-
crates.io: The official Rust package registry. Browse, search, and evaluate crates by download counts, documentation quality, and maintenance activity.
-
lib.rs: An alternative crate index with better categorization and search. Useful for discovering crates by category or comparing alternatives.
WebAssembly resources
Section titled “WebAssembly resources”-
WebAssembly Component Model: Documentation for the Component Model, which defines how Wasm modules compose with typed interfaces. Covers WIT, the interface definition language, and the architecture of components.
-
WASI Documentation: Overview and specification for the WebAssembly System Interface, which provides standardized access to filesystem, networking, and other system capabilities from Wasm modules.
-
Bytecode Alliance: A major steward of Wasm tooling outside the browser. Hosts Wasmtime, wasm-tools, wit-bindgen, and other foundational projects.
-
Wasmtime Documentation: Reference for Wasmtime, a fast and secure Wasm runtime. Covers embedding the runtime in Rust applications, WASI configuration, and Component Model support.
-
wasm-pack: A tool for building Rust code as Wasm packages for the web. Handles compilation, binding generation, and npm packaging in one step.
-
cargo-component: A Cargo subcommand for building Wasm components using the Component Model. Integrates WIT definitions and binding generation into the standard Cargo workflow.
-
rust-analyzer: The official language server for Rust. Provides IDE features – code completion, go-to-definition, inline type hints, and refactoring – in VS Code, Neovim, and other editors. (Comparable to SourceKit-LSP for Swift.)
-
Clippy: A collection of lints that catch common mistakes, suggest idiomatic alternatives, and enforce best practices. Run with
cargo clippy. (Comparable to SwiftLint.) -
rustfmt: The official code formatter. Run with
cargo fmtto apply the community-standard style. Configurable viarustfmt.toml. (Comparable to swift-format.) -
cargo-expand: Shows the result of macro expansion for your code. Invaluable for understanding what
derivemacros and other macros generate. -
Miri: An interpreter that detects undefined behavior in Rust programs – including memory errors, data races, and violations of Stacked Borrows rules. Run with
cargo miri test. Useful for validatingunsafecode.
-
Programming Rust by Jim Blandy, Jason Orendorff, and Leonora Tindall (O’Reilly, 2nd edition): A thorough treatment of Rust aimed at experienced systems programmers. Covers ownership, concurrency, unsafe code, and FFI in depth. One of the most comprehensive Rust books available.
-
Rust in Action by Tim McNamara (Manning): A project-oriented introduction that teaches Rust through building real programs – a CPU emulator, a database, a network client, and more. Good for developers who learn best by building.
-
Rust for Rustaceans by Jon Gjengset (No Starch Press): An intermediate-to-advanced book covering topics like designing public APIs, unsafe patterns, asynchronous programming, and performance. Best read after you are comfortable with the basics and want to deepen your understanding.