# Other Rust Resources

The Rust community has created a wealth of high-quality and free resources
online.

## Official Documentation

The Rust project hosts many resources. These cover Rust in general:

- [The Rust Programming Language](https://doc.rust-lang.org/book/): the
  canonical free book about Rust. Covers the language in detail and includes a
  few projects for people to build.
- [Rust By Example](https://doc.rust-lang.org/rust-by-example/): covers the Rust
  syntax via a series of examples which showcase different constructs. Sometimes
  includes small exercises where you are asked to expand on the code in the
  examples.
- [Rust Standard Library](https://doc.rust-lang.org/std/): full documentation of
  the standard library for Rust.
- [The Rust Reference](https://doc.rust-lang.org/reference/): an incomplete book
  which describes the Rust grammar and memory model.
- [Rust API Guidelines](https://rust-lang.github.io/api-guidelines/):
  recommendations on how to design APIs.

More specialized guides hosted on the official Rust site:

- [The Rustonomicon](https://doc.rust-lang.org/nomicon/): covers unsafe Rust,
  including working with raw pointers and interfacing with other languages
  (FFI).
- [Asynchronous Programming in Rust](https://rust-lang.github.io/async-book/):
  covers the new asynchronous programming model which was introduced after the
  Rust Book was written.
- [The Embedded Rust Book](https://doc.rust-lang.org/stable/embedded-book/): an
  introduction to using Rust on embedded devices without an operating system.

## Unofficial Learning Material

A small selection of other guides and tutorial for Rust:

- [Learn Rust the Dangerous Way](http://cliffle.com/p/dangerust/): covers Rust
  from the perspective of low-level C programmers.
- [Rust for Embedded C Programmers](https://opentitan.org/book/doc/rust_for_c_devs.html):
  covers Rust from the perspective of developers who write firmware in C.
- [Rust for professionals](https://overexact.com/rust-for-professionals/):
  covers the syntax of Rust using side-by-side comparisons with other languages
  such as C, C++, Java, JavaScript, and Python.
- [Rust on Exercism](https://exercism.org/tracks/rust): 100+ exercises to help
  you learn Rust.
- [Ferrous Teaching Material](https://ferrous-systems.github.io/teaching-material/index.html):
  a series of small presentations covering both basic and advanced part of the
  Rust language. Other topics such as WebAssembly, and async/await are also
  covered.
- [Advanced testing for Rust applications](https://rust-exercises.com/advanced-testing/):
  a self-paced workshop that goes beyond Rust's built-in testing framework. It
  covers `googletest`, snapshot testing, mocking as well as how to write your
  own custom test harness.
- [Beginner's Series to Rust](https://docs.microsoft.com/en-us/shows/beginners-series-to-rust/)
  and
  [Take your first steps with Rust](https://docs.microsoft.com/en-us/learn/paths/rust-first-steps/):
  two Rust guides aimed at new developers. The first is a set of 35 videos and
  the second is a set of 11 modules which covers Rust syntax and basic
  constructs.
- [Learn Rust With Entirely Too Many Linked
  Lists](https://rust-unofficial.github.io/too-many-lists/): in-depth
  exploration of Rust's memory management rules, through implementing a few
  different types of list structures.
- [The Little Book of Rust Macros](https://danielkeep.github.io/tlborm/): covers
  many details on Rust macros with practical examples.

Please see the [Little Book of Rust Books](https://lborb.github.io/book/) for
even more Rust books.
