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 (ownership) verstehen
    1. Was ist Eigentümerschaft (ownership)?
    2. Referenzen und Ausleihen (borrowing)
    3. Der Anteilstyp (slice)
  8. Strukturen (structs) für zusammenhängende Daten verwenden
    1. Strukturen (structs) definieren und instanziieren
    2. Beispielprogramm mit Strukturen (structs)
    3. Methodensyntax
  9. Aufzählungen (enums) und Musterabgleich (pattern matching)
    1. Eine Aufzählung (enum) definieren
    2. Das Kontrollflusskonstrukt match
    3. Prägnanter Kontrollfluss mit if let
  10. Wachsende Projekte verwalten mit Paketen (packages), Kisten (crates) und Modulen
    1. Pakete (packages) und Kisten (crates)
    2. Mit Modulen den Kontrollumfang und Datenschutz 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 Zeichenketten (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, Merkmale (traits) und Lebensdauer
    1. Generische Datentypen
    2. Merkmale (traits): Gemeinsames Verhalten definieren
    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. Refaktorierung um die Modularität und Fehlerbehandlung zu verbessern
    4. Bibliotheksfunktionalität mit testgetriebener Entwicklung erstellen
    5. Mit Umgebungsvariablen arbeiten
    6. Fehlermeldungen in die Standardfehlerausgabe anstatt der Standardausgabe schreiben
  16. Funktionale Sprachelemente: Iteratoren und Funktionsabschlüsse (closures)
    1. Funktionsabschlüsse (closures): Anonyme Funktionen, die ihre Umgebung erfassen
    2. Eine Reihe von Elementen verarbeiten mit Iteratoren
    3. Unser E/A-Projekt verbessern
    4. Performanzvergleich: Schleifen vs. Iteratoren
  17. Mehr über Cargo und Crates.io
    1. Bauvorgang anpassen mit Freigabeprofilen (release profiles)
    2. Kisten (crate) 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 Haldenspeicher zeigen
    2. Intelligente Zeiger wie normale Referenzen behandeln mit dem Merkmal (trait) Deref
    3. Programmcode beim Aufräumen ausführen mit dem Merkmal (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. Mit Strängen (threads) Programmcode gleichzeitig ausführen
    2. Nachrichtenaustausch zwischen Strängen (threads)
    3. Nebenläufigkeit mit gemeinsamem Zustand
    4. Erweiterbare Nebenläufigkeit mit den Merkmalen (traits) Sync und Send
  20. Async und Await
    1. Futures und die asynchrone Syntax
    2. Nebenläufigkeit mit async
    3. Arbeiten mit einer beliebigen Anzahl von Futures
    4. Ströme (streams)
    5. Merkmale für async
    6. Futures, Aufgaben und Stränge
  21. Objektorientierte Sprachelemente von Rust
    1. Charakteristiken objektorientierter Sprachen
    2. Merkmalsobjekte (trait objects) die Werte unterschiedlicher Typen erlauben
    3. Ein objektorientiertes Entwurfsmuster implementieren
  22. Muster (patterns) und Abgleich (matching)
    1. Alle Stellen an denen Muster (patterns) verwendet werden können
    2. Abweisbarkeit: Falls ein Muster (pattern) mal nicht passt
    3. Mustersyntax
  23. Fortgeschrittene Sprachelemente
    1. Unsicheres (unsafe) Rust
    2. Fortgeschrittene Merkmale (traits)
    3. Fortgeschrittene Typen
    4. Erweiterte Funktionen und Funktionsabschlüsse (closures)
    5. Makros
  24. Abschlussprojekt: Einen mehrsträngigen (multi-threaded) Webserver erstellen
    1. Einen einsträngigen (single-threaded) Webserver erstellen
    2. Unseren einsträngigen (single-threaded) Webserver in einen mehrsträngigen (multi-threaded) Webserver verwandeln
    3. Kontrolliertes Beenden und Aufräumen
  25. Anhang
    1. A - Schlüsselwörter
    2. B - Operatoren und Symbole
    3. C - Ableitbare Merkmale (traits)
    4. D - Nützliche Entwicklungswerkzeuge
    5. E - Ausgaben
    6. F - Übersetzungen des Buchs
    7. G - Wie Rust erstellt wird und „nächtliches Rust“