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 (3 hours, including breaks)
- Welcome (5 minutes)
- Hello, World (20 minutes)
- Types and Values (1 hour and 5 minutes)
- Control Flow Basics (1 hour)
- Day 1 Afternoon (2 hours and 55 minutes, including breaks)
- Tuples and Arrays (1 hour)
- References (50 minutes)
- User-Defined Types (50 minutes)
- Day 2 Morning (2 hours and 55 minutes, including breaks)
- Welcome (3 minutes)
- Pattern Matching (50 minutes)
- Methods and Traits (45 minutes)
- Generics (45 minutes)
- Day 2 Afternoon (3 hours, including breaks)
- Standard Library Types (1 hour and 10 minutes)
- Standard Library Traits (1 hour and 40 minutes)
- Day 3 Morning (2 hours and 25 minutes, including breaks)
- Welcome (3 minutes)
- Memory Management (1 hour and 10 minutes)
- Smart Pointers (55 minutes)
- Day 3 Afternoon (2 hours and 20 minutes, including breaks)
- Borrowing (1 hour)
- Slices and Lifetimes (1 hour and 10 minutes)
- Day 4 Morning (3 hours and 5 minutes, including breaks)
- Day 4 Afternoon (2 hours, including breaks)
- Error Handling (45 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
Format
The course is meant to be very interactive and we recommend letting the questions drive the exploration of Rust!