1. Willkommen bei Comprehensive Rust 🩀
  2. Ablauf des Kurses
    ❱
    1. Kursstruktur
    2. TastaturkĂŒrzel
    3. Übersetzungen
  3. Cargo verwenden
    ❱
    1. Das Rust Ökosystem
    2. Codebeispiele
    3. Cargo lokal ausfĂŒhren
  4. Tag 1: Vormittags
  5. Willkommen
  6. Hallo Welt!
    ❱
    1. Was ist Rust?
    2. Vorteile von Rust
    3. Testumgebung
  7. Datentypen und Wertebereiche
    ❱
    1. Hallo Welt!
    2. Variablen
    3. Wertebereiche
    4. Arithmetik
    5. Typinferenz
    6. Übung: Fibonacci Reihe
      ❱
      1. Lösungen
  8. Kontrollfluss
    ❱
    1. if Anweisungen
    2. Match Anweisungen
    3. Schleifen
      ❱
      1. for Schleifen
      2. loop Schleifen
    4. break und continue
      ❱
      1. Bezeichner
    5. Blöcke und GĂŒltigkeitsbereiche
      ❱
      1. GĂŒltigkeitsbereiche und Verschattungen
    6. Funktionen
    7. Makros
    8. Übung: Die Collatz Sequenz
      ❱
      1. Lösungen
  9. Tag 1: Nachmittags
  10. Willkommen
  11. Tuples und Datenfelder
    ❱
    1. Datenfelder(Arrays)
    2. Tupel
    3. Iteration ĂŒber Datenfelder
    4. Muster und Zerlegung
    5. Übung: Verschachtelte Datenfelder
      ❱
      1. Lösungen
  12. Referenzen
    ❱
    1. Geteilte Referenzen
    2. Exklusive Referenzen
    3. Anteilstypen
    4. Zeichenketten(Strings)
    5. Referenzen
    6. Übung: Geometrie
      ❱
      1. Lösungen
  13. Benutzerdefinierte Datentypen
    ❱
    1. Strukturen
    2. Tupelstrukturen
    3. AufzÀhlungstypen(Enums)
    4. Konstanten
    5. static
    6. Type Aliases
    7. Exercise: Elevator Events
      ❱
      1. Lösungen
  14. Tag 2: Vormittags
  15. Willkommen
  16. Mustervergleich
    ❱
    1. Wertevergleich
    2. Strukturen auflösen
    3. AufzÀhlungstypen auflösen
    4. Flusskontrolle mit Let
    5. Übung: Untersuchung von AusdrĂŒcken
      ❱
      1. Lösungen
  17. Methoden und Merkmale
    ❱
    1. Methoden
    2. Merkmale(Traits)
      ❱
      1. Implementierung von Merkmalen
      2. gekoppelte Merkmale (Supertraits)
      3. Datentypen von Merkmalen (Associated Types)
    3. Ableitung von Merkmalen
    4. Übung: Allgemeiner Datenlogger
      ❱
      1. Lösungen
  18. Tag 2: Nachmittags
  19. Willkommen
  20. Generische Datentypen und Methoden
    ❱
    1. Generische Funktionen
    2. Generische Datentypen
    3. Generische Methoden
    4. Merkmalsgrenzen
    5. Merkmal impl
    6. Merkmal dyn
    7. Übung: Allgemeine ' min' Funktion
      ❱
      1. Lösungen
  21. Standardbibliothek Datentypen
    ❱
    1. Standardbibliothek
    2. Dokumentation
    3. Option
    4. Result
    5. String
    6. Vec
    7. HashMap
    8. Übung: ZĂ€hler
      ❱
      1. Lösungen
  22. Standardbibliothek von Merkmalen
    ❱
    1. Vergleiche
    2. Operatoren
    3. From und Into
    4. Datentypen festlegen (Casting)
    5. Read und Write
    6. Der Default, Struktur syntax
    7. Anonyme Funktionen (closures)
    8. Übung: ROT13
      ❱
      1. Lösungen
  23. Tag 3: Vormittags
  24. Willkommen
  25. Speicherverwaltung
    ❱
    1. ÜberprĂŒfung des Programmspeichers
    2. AnsÀtze zur Speicherverwaltung
    3. EigentĂŒmerschaft
    4. Semantik des Verschiebens
    5. Clone
    6. Verbundtypen
    7. Drop
    8. Übung: Datentypen erzeugen
      ❱
      1. Lösungen
  26. erweiterter Zeigertyp (Smart pointer)
    ❱
    1. Kasten
    2. Rc
    3. Aneignung von Merkmalsobjekten
    4. Übung: BinĂ€rer Baum
      ❱
      1. Lösungen
  27. Tag 3: Nachmittags
  28. Willkommen
  29. Ausborgen
    ❱
    1. Ausborgen von Werten
    2. Ausborgen - ÜberprĂŒfung
    3. Ausborgen - Fehler
    4. InteroperabilitÀt
    5. Übung: Gesundheitsstatistiken
      ❱
      1. Lösungen
  30. Lebensdauer
    ❱
    1. Lebensdauern in Funktionsaufrufen
    2. Lebensdauern
    3. Lebensdauer von Strukturen
    4. Übung: Protobuf Analyse
      ❱
      1. Lösungen
  31. Tag 4: Vormittags
  32. Willkommen
  33. Iteratoren
    ❱
    1. Motivation
    2. Iterator Merkmale
    3. Iterator Hilfsmethoden
    4. collect
    5. IntoIterator
    6. Übung: Anwendung verschiedener Iteratormethoden
      ❱
      1. Lösungen
  34. Module
    ❱
    1. Module
    2. Dateisystemhierarchie
    3. Sichtbarkeit
    4. Verkapselung
    5. use, super, self
    6. Übung: Module fĂŒr eine GUI Bibliothek
      ❱
      1. Lösungen
  35. Tests
    ❱
    1. Unit-Tests
    2. Andere Testmöglichkeiten
    3. Compiler Lints und Clippy
    4. Luhn-Algorithmus
      ❱
      1. Lösungen
  36. Tag 4: Nachmittags
  37. Willkommen
  38. Fehlerbehandlung
    ❱
    1. LaufzeitabbrĂŒche
    2. Result
    3. \`Try Operator
    4. Try Konvertierungen
    5. Èrror\` Merkmal
    6. thiserror
    7. anyhow
    8. Übung: Fehlerbehandlung mit Result
      ❱
      1. Lösungen
  39. Unsicheres Rust
    ❱
    1. Unsicherheit
    2. Roh-zeiger dereferenzieren
    3. VerÀnderbare statische Variablen
    4. Vereinigungen
    5. Unsichere Funktionen aufrufen
    6. Unsichere Merkmale implementieren
    7. Übung: Ein FFI-Wrapper
      ❱
      1. Lösungen
  40. Android
  41. Willkommen
  42. Einrichtung
  43. Regeln zum Erstellen
    ❱
    1. BinÀrdatei
    2. Bibliothek
  44. AIDL
    ❱
    1. Tutorial: Geburtstagsdienst
      ❱
      1. Schnittstelle
      2. Service API
      3. Dienst
      4. Server
      5. Verteilen
      6. Klient
      7. API verÀndern
      8. Aktualsierung von Implementierungen
    2. AIDL Typen
      ❱
      1. Einfache Datentypen
      2. Arrays
      3. Merkmalsobjekte
      4. Variablen
      5. Dateien versenden
  45. Tests
    ❱
    1. Google Test
    2. Mocking
  46. Protokollierung
  47. InteroperabilitÀt
    ❱
    1. Mit C
      ❱
      1. Aufruf von C-Funktionen mit Bindgen
      2. Aufruf von Rust aus C
    2. Mit C++
      ❱
      1. Das Verbindungsmodul (bridge)
      2. Verbindungen mit Rust
      3. C++ Generierung
      4. Verbindungen mit C++
      5. Gemeinsame Datentypen
      6. Gemeinsam genutzte AufzÀhlungstypen (Enums)
      7. Fehlerbehandlung in Rust
      8. Fehlerbehandlung in C++
      9. ZusÀtzliche Datentypen
      10. Programmierung fĂŒr Android: C++
      11. Programmierung fĂŒr Android: Allgemeine Regeln
      12. Programmierung fĂŒr Android: Rust
    3. Mit Java
  48. Chromium
  49. Willkommen
  50. Einrichtung
  51. Vergleich zwischen Chromium und dem Cargo Ökosystem
  52. Vorgaben
  53. Regeln zum Erstellen
    ❱
    1. Unsicherer Programmcode
    2. AbhÀngigkeit des Rust Codes vom Chromium C++
    3. Visual Studio Code
    4. Übung
  54. Tests
    ❱
    1. rust_gtest_interop Bibliothek
    2. GN Regeln fĂŒr Rust Tests
    3. chromium::import! Macro
    4. Übung
  55. InteroperabilitÀt mit C++
    ❱
    1. Beispiele
    2. Die Grenzen von CXX
    3. Fehlerbehandlung in CXX
      ❱
      1. Fehlerbehandlung: QR Beispiel
      2. Fehlerbehandlung: PNG Beispiel
    4. Die Benutzung von CXX in Chromium
    5. Übung
  56. HinzufĂŒgen von externen Kisten
    ❱
    1. Konfiguration von Cargo.toml
    2. Konfiguration von gnrt_config.toml
    3. Herunterladen von Kisten (crates)
    4. Erzeugung von gn Bauvorschriften
    5. Probleme auflösen
      ❱
      1. Bauanleitungen, welche Programmcode erzeugen
      2. Bauanleitungen, welche C++ erzeugen oder spezielle Aktionen auslösen
    6. AbhÀngigkeit von Kisten
    7. ÜberprĂŒfungen und Audits
    8. Quellcode in Chromium einbauen
    9. Kisten auf den aktuellen Stand halten
    10. Übung
  57. Zusammenfassung aller Einzelteile - Übung
  58. LösungsvorschlĂ€ge der Übungen
  59. Hardwarenahes Rust: Vormittags
  60. Willkommen
  61. no_std
    ❱
    1. Kleines Beispiel
    2. alloc
  62. Mikrokontroller
    ❱
    1. Direktes MMIO
    2. PACs
    3. HAL Kisten
    4. Helfer Kisten
    5. Das Typzustandsmuster
    6. embedded-hal
    7. probe-rs und cargo-embed
      ❱
      1. Debugging
    8. Andere Projekte
  63. Übungen
    ❱
    1. Kompass
    2. Lösungen
  64. Bare-Metal: Nachmittags
  65. Applikationsprozessoren
    ❱
    1. Los gehts mit Rust
    2. Inline Assembler
    3. MMIO
    4. Schreiben eines UART Treibers
      ❱
      1. Noch mehr Merkmale
      2. Benutzung
    5. Ein besserer UART Treiber
      ❱
      1. Bitflags
      2. Mehrere Register
      3. Treiber
      4. Benutzung
    6. Protokollierung
      ❱
      1. Benutzung
    7. Ausnahmen
    8. Andere Projekte
  66. NĂŒtzliche Kisten
    ❱
    1. zerocopy
    2. aarch64-paging
    3. buddy_system_allocator
    4. tinyvec
    5. spin
  67. Hardwarenahes Rust auf Android
    ❱
    1. vmbase
  68. Übungen
    ❱
    1. RTC Treiber
    2. Lösungen
  69. ParallelitÀt: Vormittags
  70. Willkommen
  71. AblÀufe
    ❱
    1. Geradlinige AblÀufe
    2. AusfĂŒhrungsstrang mit Sichtbarkeitsbereich
  72. KanÀle
    ❱
    1. Sender und EmpfÀnger
    2. Unbegrenzte KanÀle
    3. UnbeschrÀnkte KanÀle
  73. Send und Sync
    ❱
    1. Marker Merkmale
    2. Send
    3. Sync
    4. Beispiele
  74. Geteilter Zustand
    ❱
    1. Arc
    2. Mutex
    3. Beispiel
  75. Übungen
    ❱
    1. Philosophenproblem
    2. Link ÜberprĂŒfung mit mehreren AusfĂŒhrungsstrĂ€ngen
    3. Lösungen
  76. ParallelitÀt: Nachmittags
  77. Willkommen
  78. Grundlagen asynchroner ProgrammablÀufe
    ❱
    1. async/await
    2. Schließungen
    3. Laufzeiten
      ❱
      1. Tokio
    4. Aufgaben
  79. KanÀle und Kontrollfluss
    ❱
    1. Asynchrone KanÀle
    2. Join
    3. Select
  80. TĂŒcken
    ❱
    1. Blockieren des AusfĂŒhrers
    2. Pin
    3. Async Merkmale
    4. Programmabbruch
  81. Übungen
    ❱
    1. Philosophenproblem
    2. Allgemeine Chat Anwendung
    3. Lösungen
  82. Letzte Worte
  83. Danke!
  84. Glossary
  85. Andere Ressourcen
  86. WĂŒrdigungen