1.
Introduction
1.1.
Hardware
1.2.
no_std
1.3.
Tooling
1.4.
Installation
1.4.1.
Linux
1.4.2.
MacOS
1.4.3.
Windows
1.4.4.
Verify Installation
2.
Getting started
2.1.
QEMU
2.2.
Hardware
2.3.
Memory-mapped Registers
2.4.
Semihosting
2.5.
Panicking
2.6.
Exceptions
2.7.
Interrupts
2.8.
IO
3.
Peripherals
3.1.
A first attempt in Rust
3.2.
The Borrow Checker
3.3.
Singletons
4.
Static Guarantees
4.1.
Typestate Programming
4.2.
Peripherals as State Machines
4.3.
Design Contracts
4.4.
Zero Cost Abstractions
5.
Portability
6.
Concurrency
7.
Collections
8.
Design Patterns
8.1.
HALs
8.1.1.
Checklist
8.1.2.
Naming
8.1.3.
Interoperability
8.1.4.
Predictability
8.1.5.
GPIO
9.
Tips for embedded C developers
10.
Interoperability
10.1.
A little C with your Rust
10.2.
A little Rust with your C
11.
Unsorted topics
11.1.
Optimizations: The speed size tradeoff
11.2.
Performing Math Functionality
Appendix A: Glossary
Light
Rust
Coal
Navy
Ayu
The Embedded Rust Book
Design Patterns
This chapter aims to collect various useful design patterns for embedded Rust.