- Die Programmiersprache Rust
- Vorwort
- Einführung
- 1. Erste Schritte
- 1.1. Installation
- 1.2. Hallo Welt
- 1.3. Hallo Cargo
- 2. Ein Ratespiel programmieren
- 3. Allgemeine Programmierkonzepte
- 3.1. Variablen und Veränderbarkeit
- 3.2. Datentypen
- 3.3. Funktionen
- 3.4. Kommentare
- 3.5. Kontrollfluss
- 4. Eigentümerschaft verstehen
- 4.1. Was ist Eigentümerschaft?
- 4.2. Referenzen und Borrowing
- 4.3. Der Slice-Typ
- 5. Strukturen für zusammenhängende Daten verwenden
- 5.1. Strukturen definieren und instanziieren
- 5.2. Beispielprogramm mit Strukturen
- 5.3. Methoden
- 6. Aufzählungen und Pattern Matching
- 6.1. Eine Aufzählung definieren
- 6.2. Das Kontrollflusskonstrukt match
- 6.3. Prägnanter Kontrollfluss mit if let und let...else
- 7. Pakete, Crates und Module
- 7.1. Pakete und Crates
- 7.2. Gültigkeitsbereich und Sichtbarkeit mit Modulen steuern
- 7.3. Mit Pfaden auf ein Element im Modulbaum verweisen
- 7.4. Pfade in den Gültigkeitsbereich bringen mit dem Schlüsselwort use
- 7.5. Module in verschiedene Dateien aufteilen
- 8. Allgemeine Kollektionen
- 8.1. Wertlisten in Vektoren ablegen
- 8.2. UTF-8-kodierten Text in Strings ablegen
- 8.3. Schlüssel mit zugehörigen Werten in Hashtabellen ablegen
- 9. Fehlerbehandlung
- 9.1. Nicht behebbare Fehler mit panic!
- 9.2. Behebbare Fehler mit Result
- 9.3. Wann panic! aufrufen und wann nicht?
- 10. Generische Typen, Traits und Lebensdauer
- 10.1. Generische Datentypen
- 10.2. Gemeinsames Verhalten definieren mit Traits
- 10.3. Referenzen validieren mit Lebensdauern
- 11. Automatisierte Tests schreiben
- 11.1. Tests schreiben
- 11.2. Steuern, wie Tests ausgeführt werden
- 11.3. Testverwaltung
- 12. Ein E/A-Projekt: Ein Kommandozeilenprogramm erstellen
- 12.1. Kommandozeilenargumente entgegennehmen
- 12.2. Eine Datei einlesen
- 12.3. Refactoring zum Verbessern der Modularität und Fehlerbehandlung
- 12.4. Funktionalität mit testgetriebener Entwicklung hinzufügen
- 12.5. Mit Umgebungsvariablen arbeiten
- 12.6. Fehler zur Standardfehlerausgabe umleiten
- 13. Funktionale Sprachelemente: Iteratoren und Closures
- 13.1. Closures
- 13.2. Eine Reihe von Elementen mit Iteratoren verarbeiten
- 13.3. Unser E/A-Projekt verbessern
- 13.4. Performanz von Schleifen vs. Iteratoren
- 14. Mehr über Cargo und Crates.io
- 14.1. Bauvorgang anpassen mit Freigabeprofilen
- 14.2. Crates auf crates.io veröffentlichen
- 14.3. Cargo-Arbeitsbereiche
- 14.4. Installieren von Binärdateien mit cargo install
- 14.5. Cargo um benutzerdefinierte Befehle erweitern
- 15. Intelligente Zeiger
- 15.1. Mit Box<T> auf Daten im Heap zeigen
- 15.2. Intelligente Zeiger wie normale Referenzen behandeln
- 15.3. Programmcode beim Aufräumen ausführen mit dem Trait Drop
- 15.4. Der referenzzählende intelligente Zeiger Rc<T>
- 15.5. RefCell<T> und das innere Veränderbarkeitsmuster
- 15.6. Referenzzyklen können zu einem Speicherleck führen
- 16. Furchtlose Nebenläufigkeit
- 16.1. Programmcode mit Threads gleichzeitig ausführen
- 16.2. Nachrichtenaustausch zwischen Threads
- 16.3. Nebenläufigkeit mit gemeinsamem Zustand
- 16.4. Erweiterbare Nebenläufigkeit mit Send und Sync
- 17. Grundlagen der asynchronen Programmierung: Async, Await, Futures und Streams
- 17.1. Futures und die asynchrone Syntax
- 17.2. Anwenden von Nebenläufigkeit mit async
- 17.3. Kontrolle an die Laufzeitumgebung abgeben
- 17.4. Streams: Sequenz von Futures
- 17.5. Ein genauerer Blick auf die Traits für Async
- 17.6. Futures, Aufgaben und Threads
- 18. Objektorientierte Sprachelemente
- 18.1. Charakteristiken objektorientierter Sprachen
- 18.2. Verwendung von Trait-Objekten zur Abstraktion über gemeinsames Verhalten
- 18.3. Ein objektorientiertes Entwurfsmuster implementieren
- 19. Muster und Pattern Matching
- 19.1. Stellen, an denen Muster verwendet werden können
- 19.2. Abweisbarkeit: Falls ein Muster mal nicht passt
- 19.3. Mustersyntax
- 20. Fortgeschrittene Sprachelemente
- 20.1. Unsafe Rust
- 20.2. Fortgeschrittene Traits
- 20.3. Fortgeschrittene Typen
- 20.4. Erweiterte Funktionen und Closures
- 20.5. Makros
- 21. Abschlussprojekt: Einen multi-threaded Webserver erstellen
- 21.1. Einen single-threaded Webserver erstellen
- 21.2. Von einem single-threaded zu einem multi-threaded Webserver
- 21.3. Kontrolliertes Beenden und Aufräumen
- 22. Anhang
- 22.1. A - Schlüsselwörter
- 22.2. B - Operatoren und Symbole
- 22.3. C - Ableitbare Traits
- 22.4. D - Nützliche Entwicklungswerkzeuge
- 22.5. E - Editionen
- 22.6. F - Übersetzungen des Buches
- 22.7. G - Wie Rust erstellt wird und „nightly Rust“