Course Structure
This page is for the course instructor.
Rust Fundamentals
The first four days make up Rust Fundamentals. The days are fast paced and we cover a lot of ground!
Course schedule:
- Day 1 Morning (2 hours and 5 minutes, including breaks)
Segment | Duration |
---|---|
Welcome | 5 minutes |
Hello, World | 15 minutes |
Types and Values | 40 minutes |
Control Flow Basics | 40 minutes |
- Day 1 Afternoon (2 hours and 35 minutes, including breaks)
Segment | Duration |
---|---|
Tuples and Arrays | 35 minutes |
References | 55 minutes |
User-Defined Types | 50 minutes |
- Day 2 Morning (2 hours and 10 minutes, including breaks)
Segment | Duration |
---|---|
Welcome | 3 minutes |
Pattern Matching | 1 hour |
Methods and Traits | 50 minutes |
- Day 2 Afternoon (3 hours and 15 minutes, including breaks)
Segment | Duration |
---|---|
Generics | 45 minutes |
Standard Library Types | 1 hour |
Standard Library Traits | 1 hour and 10 minutes |
- Day 3 Morning (2 hours and 20 minutes, including breaks)
Segment | Duration |
---|---|
Welcome | 3 minutes |
Memory Management | 1 hour |
Smart Pointers | 55 minutes |
- Day 3 Afternoon (1 hour and 55 minutes, including breaks)
Segment | Duration |
---|---|
Borrowing | 55 minutes |
Lifetimes | 50 minutes |
- Day 4 Morning (2 hours and 40 minutes, including breaks)
Segment | Duration |
---|---|
Welcome | 3 minutes |
Iterators | 45 minutes |
Modules | 40 minutes |
Testing | 45 minutes |
- Day 4 Afternoon (2 hours and 20 minutes, including breaks)
Segment | Duration |
---|---|
Error Handling | 1 hour and 5 minutes |
Unsafe Rust | 1 hour and 5 minutes |
Deep Dives
In addition to the 4-day class on Rust Fundamentals, we cover some more specialized topics:
Rust in Android
The Rust in Android deep dive is a half-day course on using Rust for Android platform development. This includes interoperability with C, C++, and Java.
You will need an AOSP checkout. Make a checkout of the
course repository on the same machine and move the src/android/
directory
into the root of your AOSP checkout. This will ensure that the Android build
system sees the Android.bp
files in src/android/
.
Ensure that adb sync
works with your emulator or real device and pre-build all
Android examples using src/android/build_all.sh
. Read the script to see the
commands it runs and make sure they work when you run them by hand.
Rust in Chromium
The Rust in Chromium deep dive is a half-day course on using
Rust as part of the Chromium browser. It includes using Rust in Chromium's gn
build system, bringing in third-party libraries ("crates") and C++
interoperability.
You will need to be able to build Chromium --- a debug, component build is recommended for speed but any build will work. Ensure that you can run the Chromium browser that you've built.
Bare-Metal Rust
The Bare-Metal Rust deep dive is a full day class on using Rust for bare-metal (embedded) development. Both microcontrollers and application processors are covered.
For the microcontroller part, you will need to buy the BBC micro:bit v2 development board ahead of time. Everybody will need to install a number of packages as described on the welcome page.
Concurrency in Rust
The Concurrency in Rust deep dive is a full day
class on classical as well as async
/await
concurrency.
You will need a fresh crate set up and the dependencies downloaded and ready to
go. You can then copy/paste the examples into src/main.rs
to experiment with
them:
cargo init concurrency
cd concurrency
cargo add tokio --features full
cargo run
Course schedule:
- Morning (3 hours and 20 minutes, including breaks)
Segment | Duration |
---|---|
Threads | 30 minutes |
Channels | 20 minutes |
Send and Sync | 15 minutes |
Shared State | 30 minutes |
Exercises | 1 hour and 10 minutes |
- Afternoon (3 hours and 20 minutes, including breaks)
Segment | Duration |
---|---|
Async Basics | 30 minutes |
Channels and Control Flow | 20 minutes |
Pitfalls | 55 minutes |
Exercises | 1 hour and 10 minutes |
Format
The course is meant to be very interactive and we recommend letting the questions drive the exploration of Rust!