Willkommen bei Comprehensive Rust đŠ
1.
Ablauf des Kurses
â±
1.1.
Kursstruktur
1.2.
TastaturkĂŒrzel
1.3.
Ăbersetzungen
2.
Cargo verwenden
â±
2.1.
Rust Ăkosystem
2.2.
Codebeispiele
2.3.
Cargo lokal ausfĂŒhren
Tag 1: Morgens
3.
Willkommen
4.
Hallo Welt!
â±
4.1.
Was ist Rust?
4.2.
Hallo Welt!
4.3.
Benefits of Rust
4.4.
Playground
5.
Types and Values
â±
5.1.
Variablen
5.2.
Values
5.3.
Arithmetic
5.4.
&str
5.5.
Typinferenz
5.6.
Exercise: Fibonacci
â±
5.6.1.
Lösungen
6.
Kontrollfluss
â±
6.1.
Conditionals
6.2.
for-Schleifen
6.3.
break und continue
6.4.
Blocks and Scopes
6.5.
Funktionen
6.6.
Macros
6.7.
Exercise: Collatz Sequence
â±
6.7.1.
Lösungen
Tag 1: Nachmittags
7.
Willkommen
8.
Tuples and Arrays
â±
8.1.
Tuples and Arrays
8.2.
Iterator
8.3.
Musterabgleich
8.4.
AufzÀhlungstypen destrukturieren
8.5.
Exercise: Nested Arrays
â±
8.5.1.
Lösungen
9.
Referenzen
â±
9.1.
Referenzen
9.2.
HĂ€ngende Referenzen
9.3.
Exercise: Geometry
â±
9.3.1.
Lösungen
10.
User-Defined Types
â±
10.1.
Strukturen
10.2.
Tupelstrukturen
10.3.
AufzÀhlungstypen
10.4.
static & const
10.5.
Type Aliases
10.6.
Exercise: Elevator Events
â±
10.6.1.
Lösungen
Tag 2: Morgens
11.
Willkommen
12.
Musterabgleich
â±
12.1.
AufzÀhlungstypen destrukturieren
12.2.
Kontrollfluss
12.3.
Exercise: Expression Evaluation
â±
12.3.1.
Lösungen
13.
Read und Write
â±
13.1.
Methoden
13.2.
Merkmale
13.3.
Ableitung von Merkmalen
13.4.
Merkmalsobjekte
13.5.
Exercise: Generic Logger
â±
13.5.1.
Lösungen
14.
Generische Datentypen und Methoden
â±
14.1.
Externe Funktionen
14.2.
Generische Datentypen
14.3.
Merkmalsgrenzen
14.4.
imple Merkmal
14.5.
Exercise: Generic min
â±
14.5.1.
Lösungen
Tag 2: Nachmittags
15.
Willkommen
16.
Standardbibliothek
â±
16.1.
Standardbibliothek
16.2.
Dokumentationstests
16.3.
Option
16.4.
Result
16.5.
String
16.6.
Vec
16.7.
HashMap
16.8.
Ăbungen
â±
16.8.1.
Lösungen
17.
Standardbibliothek
â±
17.1.
Vergleich
17.2.
Iteratoren
17.3.
Von und Nach
17.4.
Testen
17.5.
Lesen und Schreiben
17.6.
Default, struct update syntax
17.7.
SchlieĂungen
17.8.
Ăbungen
â±
17.8.1.
Lösungen
Tag 3: Morgens
18.
Willkommen
19.
Speicherverwaltung
â±
19.1.
Review of Program Memory
19.2.
Automatische Speicherverwaltung
19.3.
EigentĂŒmerschaft
19.4.
Semantik des Verschiebens
19.5.
Clone
19.6.
Verbundtypen
19.7.
Drop
19.8.
Exercise: Builder Type
â±
19.8.1.
Lösungen
20.
Smart Pointers
â±
20.1.
Kasten
20.2.
Rc
20.3.
Exercise: Binary Tree
â±
20.3.1.
Lösungen
Tag 3: Nachmittags
21.
Willkommen
22.
Ausleihen
â±
22.1.
Ausleihen
22.2.
Ausleihen
22.3.
InteroperabilitÀt
22.4.
Gesundheitsstatistiken
â±
22.4.1.
Lösungen
23.
Lebensdauern
â±
23.1.
Slices: &\[T\]
23.2.
HĂ€ngende Referenzen
23.3.
Lebensdauern in Funktionsaufrufen
23.4.
Lebensdauern
23.5.
Lebensdauern
23.6.
Exercise: Protobuf Parsing
â±
23.6.1.
Lösungen
Tag 1: Morgens
24.
Willkommen
25.
Iteratoren
â±
25.1.
Iterator
25.2.
IntoIterator
25.3.
FromIterator
25.4.
Exercise: Iterator Method Chaining
â±
25.4.1.
Lösungen
26.
Module
â±
26.1.
Module
26.2.
Dateisystemhierarchie
26.3.
Sichtbarkeit
26.4.
use, super, self
26.5.
Exercise: Modules for a GUI Library
â±
26.5.1.
Lösungen
27.
Testen
â±
27.1.
Testmodule
27.2.
Andere Ressourcen
27.3.
NĂŒtzliche Kisten
27.4.
GoogleTest
27.5.
Mocking
27.6.
Compiler Lints and Clippy
27.7.
Luhn-Algorithmus
â±
27.7.1.
Lösungen
Tag 1: Nachmittags
28.
Willkommen
29.
Fehlerbehandlung
â±
29.1.
LaufzeitabbrĂŒche
29.2.
Iterator
29.3.
Implizite Konvertierungen
29.4.
Die Drop-Eigenschaft
29.5.
Von und Nach
29.6.
Strukturierte Fehlerbehandlung mit Result
â±
29.6.1.
Lösungen
30.
Unsicheres Rust
â±
30.1.
Unsicheres Rust
30.2.
Roh-zeiger dereferenzieren
30.3.
VerÀnderbare statische Variablen
30.4.
Vereinigungen
30.5.
Unsichere Funktionen aufrufen
30.6.
Unsichere Merkmale implementieren
30.7.
Sicherer FFI-Wrapper
â±
30.7.1.
Lösungen
Android
31.
Willkommen
32.
Einrichtung
33.
Regeln beim Bauen
â±
33.1.
BinÀrdatei
33.2.
Bibliothek
34.
AIDL
â±
34.1.
Schnittstelle
34.2.
Implementierung
34.3.
Server
34.4.
Einsetzen
34.5.
Klient
34.6.
API verÀndern
35.
Protokollierung
36.
InteroperabilitÀt
â±
36.1.
Mit C
â±
36.1.1.
Aufruf von C-Funktionen mit Bindgen
36.1.2.
Aufruf von Rust aus C
36.2.
Mit C++
â±
36.2.1.
Testmodule
36.2.2.
Rust-BinÀrdateien
36.2.3.
Generated C++
36.2.4.
C++ Bridge
36.2.5.
Skalare Typen
36.2.6.
Shared Enums
36.2.7.
Fehlerbehandlung
36.2.8.
Fehlerbehandlung
36.2.9.
Additional Types
36.2.10.
Building for Android: C++
36.2.11.
Building for Android: Genrules
36.2.12.
Building for Android: Rust
36.3.
Mit Java
37.
Ăbungen
Chromium
38.
Willkommen
39.
Einrichtung
40.
Comparing Chromium and Cargo Ecosystems
41.
Policy
42.
Regeln beim Bauen
â±
42.1.
Unsicheres Rust
42.2.
Depending on Rust Code from Chromium C++
42.3.
Visual Studio Code
42.4.
Ăbungen
43.
Testen
â±
43.1.
rust_gtest_interop Library
43.2.
GN Rules for Rust Tests
43.3.
chromium::import! Macro
43.4.
Ăbungen
44.
InteroperabilitÀt mit C
â±
44.1.
Beispiele
44.2.
Limitations of CXX
44.3.
Fehlerbehandlung
â±
44.3.1.
Fehlerbehandlung
44.3.2.
Fehlerbehandlung
44.4.
Using CXX in Chromium
44.5.
Ăbungen
45.
Adding Third Party Crates
â±
45.1.
Configuring Cargo.toml
45.2.
Configuring gnrt_config.toml
45.3.
Downloading Crates
45.4.
Generating gn Build Rules
45.5.
Resolving Problems
â±
45.5.1.
Build Scripts Which Generate Code
45.5.2.
Build Scripts Which Build C++ or Take Arbitrary Actions
45.6.
Depending on a Crate
45.7.
Reviews and Audits
45.8.
Checking into Chromium Source Code
45.9.
Keeping Crates Up to Date
45.10.
Ăbungen
46.
Bringing It Together - Exercise
47.
Lösungen
Hardwarenahes Rust: Morgens
48.
Willkommen
49.
no_std
â±
49.1.
Kleines Beispiel
49.2.
alloc
50.
Mikrokontroller
â±
50.1.
MMIO
50.2.
PACs
50.3.
HAL Kisten
50.4.
Helfer Kisten
50.5.
Das Typzustandsmuster
50.6.
embedded-hal
50.7.
probe-rs and cargo-embed
â±
50.7.1.
Debugging
50.8.
Andere Ressourcen
51.
Ăbungen
â±
51.1.
Kompass
51.2.
Lösungen
Bare-Metal: Nachmittags
52.
Applikationsprozessoren
â±
52.1.
Getting Ready to Rust
52.2.
Inline Assembly
52.3.
MMIO
52.4.
Schreiben eines UART Treibers
â±
52.4.1.
Noch mehr Merkmale
52.5.
Ein besserer UART Treiber
â±
52.5.1.
Bitflags
52.5.2.
Mehrere Register
52.5.3.
Treiber
52.5.4.
Benutzung
52.6.
Protokollierung
â±
52.6.1.
Benutzung
52.7.
Funktionen
52.8.
Andere Ressourcen
53.
NĂŒtzliche Kisten
â±
53.1.
zerocopy
53.2.
aarch64-paging
53.3.
buddy_system_allocator
53.4.
tinyvec
53.5.
statisch
54.
Android
â±
54.1.
vmbase
55.
Ăbungen
â±
55.1.
RTC Treiber
55.2.
Lösungen
NebenlÀufigkeit: Morgens
56.
Willkommen
57.
AusfĂŒhrungsstrang
â±
57.1.
AusfĂŒhrungsstrang mit Sichtbarkeitsbereich
58.
KanÀle
â±
58.1.
Unbegrenzte KanÀle
58.2.
UnbeschrÀnkte KanÀle
59.
Senden und Synchronisieren
â±
59.1.
Senden
59.2.
Synchronisieren
59.3.
Beispiele
60.
Geteilter Zustand
â±
60.1.
Bogen
60.2.
Mutex
60.3.
Beispiel
61.
Ăbungen
â±
61.1.
Philosophenproblem
61.2.
Link ĂberprĂŒfung mit mehreren AusfĂŒhrungsstrĂ€ngen
61.3.
Lösungen
NebenlÀufigkeit: Nachmittags
62.
Async Grundlagen
â±
62.1.
async/await
62.2.
SchlieĂungen
62.3.
Laufzeiten
â±
62.3.1.
Tokio
62.4.
Aufgaben
62.5.
Async KanÀle
63.
Kontrollfluss
â±
63.1.
Join
63.2.
Aufstellen
64.
TĂŒcken
â±
64.1.
Blockieren des AusfĂŒhrers
64.2.
Pin
64.3.
Async Merkmale
64.4.
Installation
65.
Ăbungen
â±
65.1.
Philosophenproblem
65.2.
Broadcast Chat Application
65.3.
Lösungen
Letzte Worte
66.
Danke!
67.
Glossary
68.
Andere Ressourcen
69.
WĂŒrdigungen
Light
Rust
Coal
Navy
Ayu
Comprehensive Rust đŠ
English
Brazilian Portuguese (PortuguĂȘs do Brasil)
Chinese Simplified (æ±èŻ)
Chinese Traditional (æŒąèȘ)
Japanese (æ„æŹèȘ)
Korean (íê”ìŽ)
Farsi (Ùۧ۱۳Û)
Spanish (Español)
Ukrainian (ŃĐșŃĐ°ŃĐœŃŃĐșĐ°)
Lösungen
Solutions to the Chromium exercises can be found in
this series of CLs
.