2022-12-21 17:36:30 +02:00
|
|
|
# Welcome to Comprehensive Rust 🦀
|
|
|
|
|
2023-05-16 00:12:10 +02:00
|
|
|
[![Build workflow](https://img.shields.io/github/actions/workflow/status/google/comprehensive-rust/build.yml?style=flat-square)](https://github.com/google/comprehensive-rust/actions/workflows/build.yml?query=branch%3Amain)
|
2023-03-07 14:45:00 +02:00
|
|
|
[![GitHub contributors](https://img.shields.io/github/contributors/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/graphs/contributors)
|
|
|
|
[![GitHub stars](https://img.shields.io/github/stars/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/stargazers)
|
|
|
|
|
2023-05-02 08:02:28 +02:00
|
|
|
This is a three day Rust course developed by the Android team. The course covers
|
2022-12-21 17:36:30 +02:00
|
|
|
the full spectrum of Rust, from basic syntax to advanced topics like generics
|
|
|
|
and error handling. It also includes Android-specific content on the last day.
|
|
|
|
|
2022-12-22 19:33:02 +02:00
|
|
|
The goal of the course is to teach you Rust. We assume you don't know anything
|
2022-12-21 19:20:30 +02:00
|
|
|
about Rust and hope to:
|
2022-12-21 17:36:30 +02:00
|
|
|
|
|
|
|
* Give you a comprehensive understanding of the Rust syntax and language.
|
|
|
|
* Enable you to modify existing programs and write new programs in Rust.
|
|
|
|
* Show you common Rust idioms.
|
|
|
|
|
2023-05-02 08:02:28 +02:00
|
|
|
The first three days show you the fundamentals of Rust. Following this, you're
|
2023-05-24 16:15:46 +02:00
|
|
|
invited to dive into one or more specialized topics:
|
2022-12-21 17:36:30 +02:00
|
|
|
|
2023-05-02 08:02:28 +02:00
|
|
|
* [Android](android.md): a half-day course on using Rust for Android platform
|
2023-05-24 10:15:08 +02:00
|
|
|
development (AOSP). This includes interoperability with C, C++, and Java.
|
2023-07-06 11:38:43 +02:00
|
|
|
* [Bare-metal](bare-metal.md): a whole-day class on using Rust for bare-metal
|
2023-05-02 08:02:28 +02:00
|
|
|
(embedded) development. Both microcontrollers and application processors are
|
|
|
|
covered.
|
2023-07-06 11:38:43 +02:00
|
|
|
* [Concurrency](concurrency.md): a whole-day class on concurrency in Rust. We
|
2023-05-02 08:02:28 +02:00
|
|
|
cover both classical concurrency (preemptively scheduling using threads and
|
2023-05-24 10:15:08 +02:00
|
|
|
mutexes) and async/await concurrency (cooperative multitasking using
|
2023-05-02 08:02:28 +02:00
|
|
|
futures).
|
2022-12-21 17:36:30 +02:00
|
|
|
|
2022-12-25 18:12:42 +02:00
|
|
|
|
2022-12-21 17:36:30 +02:00
|
|
|
## Non-Goals
|
|
|
|
|
2022-12-22 19:33:02 +02:00
|
|
|
Rust is a large language and we won't be able to cover all of it in a few days.
|
2022-12-21 17:36:30 +02:00
|
|
|
Some non-goals of this course are:
|
|
|
|
|
2023-07-06 11:38:43 +02:00
|
|
|
* Learning how to develop macros: please see [Chapter 19.5 in the Rust
|
2022-12-21 17:36:30 +02:00
|
|
|
Book](https://doc.rust-lang.org/book/ch19-06-macros.html) and [Rust by
|
|
|
|
Example](https://doc.rust-lang.org/rust-by-example/macros.html) instead.
|
|
|
|
|
|
|
|
## Assumptions
|
|
|
|
|
2023-07-06 11:38:43 +02:00
|
|
|
The course assumes that you already know how to program. Rust is a statically-
|
2022-12-21 17:36:30 +02:00
|
|
|
typed language and we will sometimes make comparisons with C and C++ to better
|
|
|
|
explain or contrast the Rust approach.
|
|
|
|
|
2023-07-06 11:38:43 +02:00
|
|
|
If you know how to program in a dynamically-typed language such as Python or
|
2022-12-21 17:36:30 +02:00
|
|
|
JavaScript, then you will be able to follow along just fine too.
|
2023-01-07 17:44:53 +02:00
|
|
|
|
|
|
|
<details>
|
|
|
|
|
|
|
|
This is an example of a _speaker note_. We will use these to add additional
|
|
|
|
information to the slides. This could be key points which the instructor should
|
|
|
|
cover as well as answers to typical questions which come up in class.
|
|
|
|
|
|
|
|
</details>
|