2022-12-21 16:36:30 +01:00
|
|
|
# Welcome to Comprehensive Rust 🦀
|
|
|
|
|
2023-05-16 00:12:10 +02:00
|
|
|
[](https://github.com/google/comprehensive-rust/actions/workflows/build.yml?query=branch%3Amain)
|
2023-03-07 13:45:00 +01:00
|
|
|
[](https://github.com/google/comprehensive-rust/graphs/contributors)
|
|
|
|
[](https://github.com/google/comprehensive-rust/stargazers)
|
|
|
|
|
2023-07-25 15:21:58 +02:00
|
|
|
This is a free Rust course developed by the Android team at Google. The course covers
|
2022-12-21 16:36:30 +01:00
|
|
|
the full spectrum of Rust, from basic syntax to advanced topics like generics
|
2023-07-25 15:04:32 +02:00
|
|
|
and error handling.
|
2022-12-21 16:36:30 +01:00
|
|
|
|
2023-08-31 09:46:22 +02:00
|
|
|
> The latest version of the course can be found at
|
|
|
|
> <https://google.github.io/comprehensive-rust/>. If you are reading
|
|
|
|
> somewhere else, please check there for updates.
|
|
|
|
|
2022-12-22 18:33:02 +01:00
|
|
|
The goal of the course is to teach you Rust. We assume you don't know anything
|
2022-12-21 09:20:30 -08:00
|
|
|
about Rust and hope to:
|
2022-12-21 16:36:30 +01: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-07-25 15:04:32 +02:00
|
|
|
We call the first three course days Rust Fundamentals.
|
|
|
|
|
|
|
|
Building on this, you're invited to dive into one or more specialized topics:
|
2022-12-21 16:36:30 +01: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 11:15:08 +03:00
|
|
|
development (AOSP). This includes interoperability with C, C++, and Java.
|
2023-07-06 09:38:43 +00: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 09:38:43 +00: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 11:15:08 +03:00
|
|
|
mutexes) and async/await concurrency (cooperative multitasking using
|
2023-05-02 08:02:28 +02:00
|
|
|
futures).
|
2022-12-21 16:36:30 +01:00
|
|
|
|
2022-12-25 17:12:42 +01:00
|
|
|
|
2022-12-21 16:36:30 +01:00
|
|
|
## Non-Goals
|
|
|
|
|
2022-12-22 18:33:02 +01:00
|
|
|
Rust is a large language and we won't be able to cover all of it in a few days.
|
2022-12-21 16:36:30 +01:00
|
|
|
Some non-goals of this course are:
|
|
|
|
|
2023-07-06 09:38:43 +00:00
|
|
|
* Learning how to develop macros: please see [Chapter 19.5 in the Rust
|
2022-12-21 16:36:30 +01: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-25 13:51:51 +02:00
|
|
|
The course assumes that you already know how to program. Rust is a statically-typed
|
|
|
|
language and we will sometimes make comparisons with C and C++ to better
|
2022-12-21 16:36:30 +01:00
|
|
|
explain or contrast the Rust approach.
|
|
|
|
|
2023-07-06 09:38:43 +00:00
|
|
|
If you know how to program in a dynamically-typed language such as Python or
|
2022-12-21 16:36:30 +01:00
|
|
|
JavaScript, then you will be able to follow along just fine too.
|
2023-01-07 16:44:53 +01: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>
|