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-12-31 00:15:07 +01:00
|
|
|
This is a free Rust course developed by the Android team at Google. The course
|
|
|
|
covers the full spectrum of Rust, from basic syntax to advanced topics like
|
|
|
|
generics 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
|
2023-12-31 00:15:07 +01:00
|
|
|
> <https://google.github.io/comprehensive-rust/>. If you are reading somewhere
|
|
|
|
> else, please check there for updates.
|
2024-02-26 07:24:28 -05:00
|
|
|
>
|
2024-06-25 06:45:04 -07:00
|
|
|
> The course is available in other languages. Select your preferred language in
|
|
|
|
> the top right corner of the page or check the
|
|
|
|
> [Translations](running-the-course/translations.md) page for a list of all
|
|
|
|
> available translations.
|
|
|
|
>
|
2024-02-26 07:24:28 -05:00
|
|
|
> The course is also available [as a PDF](comprehensive-rust.pdf).
|
2023-08-31 09:46:22 +02:00
|
|
|
|
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
|
|
|
|
2023-12-31 00:15:07 +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.
|
2022-12-21 16:36:30 +01:00
|
|
|
|
2023-11-29 10:39:24 -05:00
|
|
|
We call the first four course days Rust Fundamentals.
|
2023-07-25 15:04:32 +02:00
|
|
|
|
|
|
|
Building on this, you're invited to dive into one or more specialized topics:
|
2022-12-21 16:36:30 +01:00
|
|
|
|
2023-12-31 00:15:07 +01: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-12-31 00:15:07 +01:00
|
|
|
- [Chromium](chromium.md): a half-day course on using Rust within Chromium based
|
|
|
|
browsers. This includes interoperability with C++ and how to include
|
2023-11-27 18:21:19 +00:00
|
|
|
third-party crates in Chromium.
|
2023-12-31 00:15:07 +01: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.
|
2024-07-22 14:37:19 +03:00
|
|
|
- [Concurrency](concurrency/welcome.md): a whole-day class on concurrency in
|
|
|
|
Rust. We cover both classical concurrency (preemptively scheduling using
|
|
|
|
threads and mutexes) and async/await concurrency (cooperative multitasking
|
|
|
|
using futures).
|
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-12-31 00:15:07 +01:00
|
|
|
- Learning how to develop macros: please see
|
|
|
|
[Chapter 19.5 in the Rust 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.
|
2022-12-21 16:36:30 +01:00
|
|
|
|
|
|
|
## Assumptions
|
|
|
|
|
2023-12-31 00:15:07 +01: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 explain or contrast the Rust approach.
|
2022-12-21 16:36:30 +01:00
|
|
|
|
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>
|