2022-12-21 16:36:30 +01:00
|
|
|
# Course Structure
|
|
|
|
|
2023-01-06 10:40:37 +01:00
|
|
|
> This page is for the course instructor.
|
|
|
|
|
2023-09-01 14:43:20 +02:00
|
|
|
## Rust Fundamentals
|
|
|
|
|
2023-12-13 15:26:34 -08:00
|
|
|
The first four days make up [Rust Fundamentals](../welcome-day-1.md).
|
2023-11-29 10:39:24 -05:00
|
|
|
The days are fast paced and we cover a lot of ground!
|
2022-12-21 16:36:30 +01:00
|
|
|
|
2023-11-29 10:39:24 -05:00
|
|
|
{{%course outline Fundamentals}}
|
2023-05-02 08:02:28 +02:00
|
|
|
|
|
|
|
## Deep Dives
|
|
|
|
|
2023-12-05 16:06:42 -07:00
|
|
|
In addition to the 4-day class on Rust Fundamentals, we cover some more
|
2023-05-02 08:02:28 +02:00
|
|
|
specialized topics:
|
|
|
|
|
2023-08-25 18:38:21 +02:00
|
|
|
### Rust in Android
|
2023-05-02 08:02:28 +02:00
|
|
|
|
2023-08-25 18:38:21 +02:00
|
|
|
The [Rust in Android](../android.md) deep dive is a half-day course on using Rust for
|
2023-05-24 11:15:08 +03:00
|
|
|
Android platform development. This includes interoperability with C, C++, and
|
2023-05-02 08:02:28 +02:00
|
|
|
Java.
|
|
|
|
|
|
|
|
You will need an [AOSP checkout][1]. Make a checkout of the [course
|
|
|
|
repository][2] 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.
|
|
|
|
|
|
|
|
[1]: https://source.android.com/docs/setup/download/downloading
|
|
|
|
[2]: https://github.com/google/comprehensive-rust
|
|
|
|
|
2023-11-27 18:21:19 +00:00
|
|
|
### Rust in Chromium
|
|
|
|
|
|
|
|
The [Rust in Chromium](../chromium.md) 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.
|
|
|
|
|
2023-11-28 19:41:09 +01:00
|
|
|
You will need to be able to build Chromium --- a debug, component build is
|
2023-11-27 18:21:19 +00:00
|
|
|
[recommended](../chromium/setup.md) for speed but any build will work.
|
|
|
|
Ensure that you can run the Chromium browser that you've built.
|
|
|
|
|
2023-08-25 18:38:21 +02:00
|
|
|
### Bare-Metal Rust
|
2023-05-02 08:02:28 +02:00
|
|
|
|
2023-08-25 18:38:21 +02:00
|
|
|
The [Bare-Metal Rust](../bare-metal.md) deep dive is a full day class on using Rust for
|
2023-05-02 08:02:28 +02:00
|
|
|
bare-metal (embedded) development. Both microcontrollers and application
|
|
|
|
processors are covered.
|
|
|
|
|
|
|
|
For the microcontroller part, you will need to buy the [BBC
|
|
|
|
micro:bit](https://microbit.org/) v2 development board ahead of time. Everybody
|
|
|
|
will need to install a number of packages as described on the [welcome
|
|
|
|
page](../bare-metal.md).
|
|
|
|
|
2023-08-25 18:38:21 +02:00
|
|
|
### Concurrency in Rust
|
2023-05-02 08:02:28 +02:00
|
|
|
|
2023-08-25 18:38:21 +02:00
|
|
|
The [Concurrency in Rust](../concurrency.md) deep dive is a full day class on classical
|
2023-05-02 08:02:28 +02:00
|
|
|
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:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
cargo init concurrency
|
|
|
|
cd concurrency
|
|
|
|
cargo add tokio --features full
|
|
|
|
cargo run
|
|
|
|
```
|
2022-12-21 16:36:30 +01:00
|
|
|
|
|
|
|
## Format
|
|
|
|
|
2023-01-06 10:40:37 +01:00
|
|
|
The course is meant to be very interactive and we recommend letting the
|
|
|
|
questions drive the exploration of Rust!
|