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
Rust and Web Assembly
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
Why Rust?
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