1. Die Programmiersprache Rust
  2. Vorwort
  3. Einführung
  4. Erste Schritte
    1. Installation
    2. Hallo Welt
    3. Hallo Cargo
  5. Ein Ratespiel programmieren
  6. Allgemeine Programmierkonzepte
    1. Variablen und Veränderbarkeit
    2. Datentypen
    3. Funktionen
    4. Kommentare
    5. Kontrollfluss
  7. Eigentümerschaft verstehen
    1. Was ist Eigentümerschaft?
    2. Referenzen und Borrowing
    3. Der Slice-Typ
  8. Strukturen für zusammenhängende Daten verwenden
    1. Strukturen definieren und instanziieren
    2. Beispielprogramm mit Strukturen
    3. Methoden
  9. Aufzählungen und Pattern Matching
    1. Eine Aufzählung definieren
    2. Das Kontrollflusskonstrukt match
    3. Prägnanter Kontrollfluss mit if let und let...else
  10. Pakete, Crates und Module
    1. Pakete und Crates
    2. Gültigkeitsbereich und Sichtbarkeit mit Modulen steuern
    3. Mit Pfaden auf ein Element im Modulbaum verweisen
    4. Pfade in den Gültigkeitsbereich bringen mit dem Schlüsselwort use
    5. Module in verschiedene Dateien aufteilen
  11. Allgemeine Kollektionen
    1. Wertlisten in Vektoren ablegen
    2. UTF-8-kodierten Text in Strings ablegen
    3. Schlüssel mit zugehörigen Werten in Hashtabellen ablegen
  12. Fehlerbehandlung
    1. Nicht behebbare Fehler mit panic!
    2. Behebbare Fehler mit Result
    3. Wann panic! aufrufen und wann nicht?
  13. Generische Typen, Traits und Lebensdauer
    1. Generische Datentypen
    2. Gemeinsames Verhalten definieren mit Traits
    3. Referenzen validieren mit Lebensdauern
  14. Automatisierte Tests schreiben
    1. Tests schreiben
    2. Steuern, wie Tests ausgeführt werden
    3. Testverwaltung
  15. Ein E/A-Projekt: Ein Kommandozeilenprogramm erstellen
    1. Kommandozeilenargumente entgegennehmen
    2. Eine Datei einlesen
    3. Refactoring zum Verbessern der Modularität und Fehlerbehandlung
    4. Funktionalität mit testgetriebener Entwicklung hinzufügen
    5. Mit Umgebungsvariablen arbeiten
    6. Fehler zur Standardfehlerausgabe umleiten
  16. Funktionale Sprachelemente: Iteratoren und Closures
    1. Closures
    2. Eine Reihe von Elementen mit Iteratoren verarbeiten
    3. Unser E/A-Projekt verbessern
    4. Performanz von Schleifen vs. Iteratoren
  17. Mehr über Cargo und Crates.io
    1. Bauvorgang anpassen mit Freigabeprofilen
    2. Crates auf crates.io veröffentlichen
    3. Cargo-Arbeitsbereiche
    4. Installieren von Binärdateien mit cargo install
    5. Cargo um benutzerdefinierte Befehle erweitern
  18. Intelligente Zeiger
    1. Mit Box<T> auf Daten im Heap zeigen
    2. Intelligente Zeiger wie normale Referenzen behandeln
    3. Programmcode beim Aufräumen ausführen mit dem Trait Drop
    4. Der referenzzählende intelligente Zeiger Rc<T>
    5. RefCell<T> und das innere Veränderbarkeitsmuster
    6. Referenzzyklen können zu einem Speicherleck führen
  19. Furchtlose Nebenläufigkeit
    1. Programmcode mit Threads gleichzeitig ausführen
    2. Nachrichtenaustausch zwischen Threads
    3. Nebenläufigkeit mit gemeinsamem Zustand
    4. Erweiterbare Nebenläufigkeit mit Send und Sync
  20. Grundlagen der asynchronen Programmierung: Async, Await, Futures und Streams
    1. Futures und die asynchrone Syntax
    2. Anwenden von Nebenläufigkeit mit async
    3. Kontrolle an die Laufzeitumgebung abgeben
    4. Streams: Sequenz von Futures
    5. Ein genauerer Blick auf die Traits für Async
    6. Futures, Aufgaben und Threads
  21. Objektorientierte Sprachelemente
    1. Charakteristiken objektorientierter Sprachen
    2. Verwendung von Trait-Objekten zur Abstraktion über gemeinsames Verhalten
    3. Ein objektorientiertes Entwurfsmuster implementieren
  22. Muster und Pattern Matching
    1. Stellen, an denen Muster verwendet werden können
    2. Abweisbarkeit: Falls ein Muster mal nicht passt
    3. Mustersyntax
  23. Fortgeschrittene Sprachelemente
    1. Unsafe Rust
    2. Fortgeschrittene Traits
    3. Fortgeschrittene Typen
    4. Erweiterte Funktionen und Closures
    5. Makros
  24. Abschlussprojekt: Einen multi-threaded Webserver erstellen
    1. Einen single-threaded Webserver erstellen
    2. Von einem single-threaded zu einem multi-threaded Webserver
    3. Kontrolliertes Beenden und Aufräumen
  25. Anhang
    1. A - Schlüsselwörter
    2. B - Operatoren und Symbole
    3. C - Ableitbare Traits
    4. D - Nützliche Entwicklungswerkzeuge
    5. E - Editionen
    6. F - Übersetzungen des Buches
    7. G - Wie Rust erstellt wird und „nightly Rust“