Summary Introduction Hardware no_std Tooling Installation Linux MacOS Windows Verify Installation Getting started QEMU Hardware Memory-mapped Registers Semihosting Panicking Exceptions Interrupts IO Peripherals A first attempt in Rust The Borrow Checker Singletons Static Guarantees Typestate Programming Peripherals as State Machines Design Contracts Zero Cost Abstractions Portability Concurrency Collections Tips for embedded C developers Interoperability A little C with your Rust A little Rust with your C Unsorted topics Optimizations: The speed size tradeoff Appendix A: Glossary