Rust Fundamentals
- Overview
 - Installation
 - Basic Types
 - Control Flow
 - Compound Types
 - Ownership and Borrowing
 - Error Handling
 - Collections
 - Iterators
 - Imports and Modules
 - Good Design Practices
 
Applied Rust
- Methods and Traits
 - Rust I/O Traits
 - Generics
 - Lifetimes
 - Cargo Workspaces
 - Heap Allocation (Box and Rc)
 - Shared Mutability (Cell, RefCell)
 - Thread Safety (Send/Sync, Arc, Mutex)
 - Closures and the Fn/FnOnce/FnMut traits
 - Spawning Threads and Scoped Threads
 
Advanced Rust
- Advanced Strings
 - Debugging Rust
 - Deconstructing Send, Arc, and Mutex
 - Dependency Management with Cargo
 - Deref Coercions
 - Design Patterns
 - Documentation
 - Drop, Panic and Abort
 - Dynamic Dispatch
 - Macros
 - Property Testing
 - Rust Projects Build Time
 - Send and Sync
 - Serde
 - Testing
 - The stdlib
 - Using Cargo
 - Using Types to encode State
 - WASM
 
No-Std Rust
Under development
- Overview of no-std Rust
 - Rust in the Linux Kernel
 - Rust on an RTOS
 - Writing a new target
 
Bare-Metal Rust
- Overview of Bare-Metal Rust
 - Booting a Cortex-M Microcontroller
 - PACs and svd2rust
 - Writing Drivers
 - The Embedded HAL and its implementations
 - Board Support Crates
 - Using defmt
 
Under development
- Exceptions and Interrupts on a Cortex-M Microcontroller
 - Using RTIC v1
 
Ferrocene
Rust for Decision Makers
Credits
The development of this course is financed by Ferrous Systems. They are open sourced as a contribution to the growth of the Rust language.
If you wish to fund further development of the course, book a training!
License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
We encourage the use of this material, under the terms of the above license, in the production and/or delivery of commercial or open-source Rust training programmes.
Copyright (c) Ferrous Systems, 2024