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 Design Patterns HALs Checklist Naming Interoperability Predictability GPIO 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 Performing Math Functionality Appendix A: Glossary