Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Der Kodex ist eher ein Leitfaden als eine echte Regel.

Hector Barbossa

In der überfüllten Landschaft der modernen Programmiersprachen ist Rust anders. Rust bietet die Geschwindigkeit einer kompilierten Sprache, die Effizienz einer nicht-garbage-collected Sprache und die Typsicherheit einer funktionalen Sprache - sowie eine einzigartige Lösung für Speichersicherheitsprobleme. Deshalb wird Rust in Umfragen regelmäßig als beliebteste Programmiersprache genannt.

Die Stärke und Konsistenz des Typensystems von Rust bedeutet , dass, wenn ein Rust-Programm kompiliert werden kann, eine gute Chance besteht, dass es funktioniert - ein Phänomen, das bisher nur bei akademischeren, weniger zugänglichen Sprachen wie Haskell beobachtet wurde. Wenn sich ein Rust-Programm kompilieren lässt, wird es auch sicher funktionieren.

Diese Sicherheit - sowohl Typsicherheit als auch Speichersicherheit - hat allerdings ihren Preis. Trotz der Qualität der grundlegenden Dokumentation hat Rust den Ruf, einen steilen Einstieg zu haben, bei dem Neulinge die Einführungsrituale durchlaufen müssen, indem sie gegen den Borrow Checker ankämpfen, ihre Datenstrukturen umgestalten und sich von den Lebenszeiten verwirren lassen. Ein Rust-Programm, das sich kompilieren lässt, hat vielleicht eine gute Chance, beim ersten Mal zu funktionieren, aber es ist ein echter Kampf, es zum Kompilieren zu bringen - selbst mit den bemerkenswert hilfreichen Fehlerdiagnosen des Rust-Compilers.

Für wen dieses Buch ist

Dieses Buch versucht, in den Bereichen zu helfen, in denen Programmierer Schwierigkeiten haben, selbst wenn sie bereits Erfahrung mit einer kompilierten Sprache wie C++ haben. Deshalb - und wie auch bei anderen Büchern über Effektive <Sprache>- ist dieses Buch als zweites Buch gedacht, das ein Rust-Neuling braucht, nachdem er die Grundlagen bereits anderswo kennengelernt hat - zum Beispiel in The Rust Programming Language (Steve Klabnik und Carol Nichols, No Starch Press) oder Programming Rust (Jim Blandy et al., O'Reilly).

Die Sicherheit von Rust führt jedoch zu einer etwas anderen Ausrichtung der Artikel, insbesondere im Vergleich zu Scott Meyers' ursprünglicher Effective C++-Serie. Die Sprache C++ war (und ist) voller Fußangeln, daher konzentrierte sich Effective C++ auf eine Sammlung von Ratschlägen zur Vermeidung dieser Fußangeln, die auf praktischen Erfahrungen bei der Erstellung von Software in C++ basierten. Wichtig war dabei, dass es sich um Richtlinien und nicht um Regeln handelte, denn Richtlinien haben Ausnahmen - die ausführliche Begründung einer Richtlinie ermöglicht es den Lesern, selbst zu entscheiden, ob ihr spezielles Szenario es rechtfertigt, die Regel zu brechen.

Der allgemeine Stil, Ratschläge zusammen mit den Gründen für diese Ratschläge zu geben, wird hier beibehalten. Da Rust jedoch bemerkenswert frei von Fußangeln ist, konzentrieren sich die Items hier eher auf die Konzepte, die Rust einführt. Viele Artikel tragen Titel wie "Verstehe..." und "Mach dich vertraut mit..." und helfen auf dem Weg zu einem flüssigen, idiomatischen Rust.

Die Sicherheit von Rust führt auch dazu, dass es keine Einträge mit der Überschrift "Niemals..." gibt. Wenn du etwas wirklich niemals tun solltest, wird der Compiler dich in der Regel daran hindern, es zu tun.

Rostige Version

Der Text ist für die 2018er Ausgabe von Rust geschrieben und verwendet die stabile Toolchain. Die Rückwärtskompatibilität von Rust bedeutet, dass jede spätere Ausgabe von Rust, auch die Ausgabe 2021, den für die Ausgabe 2018 geschriebenen Code unterstützt, selbst wenn diese spätere Ausgabe bahnbrechende Änderungen mit sich bringt. Rust ist inzwischen so stabil, dass die Unterschiede zwischen den Ausgaben 2018 und 2021 gering sind. Keiner der Codes in diesem Buch muss geändert werden, um mit der Ausgabe 2021 kompatibel zu sein (allerdings gibt es in Punkt 19 eine Ausnahme, bei der eine neuere Version von Rust ein neues Verhalten ermöglicht, das vorher nicht möglich war).

Die Artikel hier behandeln keine Aspekte der async Funktionalität von Rust, da es sich dabei um fortgeschrittenere Konzepte und weniger stabile Toolchain-Unterstützung handelt - es gibt bereits genug Stoff für synchrones Rust. Vielleicht wird es in Zukunft ein effektives Async Rust geben...

Die für die Codefragmente und Fehlermeldungen verwendete Version rustc ist 1.70. Es ist unwahrscheinlich, dass die Codefragmente für spätere Versionen geändert werden müssen, aber die Fehlermeldungen können je nach Compiler-Version variieren. Die Fehlermeldungen im Text wurden ebenfalls manuell bearbeitet, damit sie in die Breite des Buches passen, sind aber ansonsten so, wie sie vom Compiler erzeugt werden.

Der Text enthält eine Reihe von Verweisen auf und Vergleichen mit anderen statisch typisierten Sprachen wie Java, Go und C++, um Lesern mit Erfahrung in diesen Sprachen die Orientierung zu erleichtern. (C++ ist wahrscheinlich die am ehesten vergleichbare Sprache, vor allem wenn die Move-Semantik von C++11 ins Spiel kommt.)

Navigieren in diesem Buch

Die Artikel, aus denen das Buch besteht, sind in sechs Kapitel unterteilt:

Kapitel 1, "Typen"

Vorschläge, die sich um das Kerntypensystem von Rust drehen

Kapitel 2, "Eigenschaften"

Vorschläge für die Arbeit mit den Eigenschaften von Rust

Kapitel 3, "Konzepte"

Kernideen, die das Design von Rust prägen

Kapitel 4, "Abhängigkeiten"

Tipps für die Arbeit mit dem Paket-Ökosystem von Rust

Kapitel 5, "Werkzeugbau"

Vorschläge, wie du deine Codebasis verbessern kannst, indem du über den Rust-Compiler hinausgehst

Kapitel 6, "Jenseits von Standard-Rost"

Vorschläge für den Fall, dass du außerhalb der standardmäßigen, sicheren Umgebung von Rust arbeiten musst

Obwohl das Kapitel "Konzepte" wohl grundlegender ist als die Kapitel "Typen" und "Eigenschaften", ist es absichtlich später im Buch platziert, damit Leser, die von Anfang bis Ende lesen, erst einmal etwas Vertrauen aufbauen können.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.

Constant width

Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter https://oreilly.com.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/effective-rust aufrufen .

Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter https://oreilly.com.

Du findest uns auf LinkedIn: https://linkedin.com/company/oreilly-media.

Sieh uns auf YouTube: https://youtube.com/oreillymedia.

Danksagungen

Mein Dank gilt den Menschen, die dieses Buch möglich gemacht haben:

  • Die technischen Prüfer, die fachkundiges und detailliertes Feedback zu allen Aspekten des Textes gegeben haben: Pietro Albini, Jess Males, Mike Capp und insbesondere Carol Nichols.

  • Meine Redakteure bei O'Reilly: Jeff Bleiel, Brian Guerin und Katie Tozer.

  • Tiziano Santoro, von dem ich ursprünglich viele Dinge über Rust gelernt habe.

  • Danny Elfanbaum, der wichtige technische Hilfe bei der AsciiDoc-Formatierung des Buches geleistet hat.

  • Vor allem die fleißigen Leser der ursprünglichen Webversion des Buches:

    • Julian Rosse, der Dutzende von Tippfehlern und anderen Fehlern in dem Online-Text entdeckte.

    • Martin Disch, der auf Verbesserungsmöglichkeiten und Ungenauigkeiten in mehreren Artikeln hinwies.

    • Chris Fleetwood, Sergey Kaunov, Clifford Matthews, Remo Senekowitsch, Kirill Zaborsky und einem anonymen Proton-Mail-Nutzer, der auf Fehler im Text hingewiesen hat.

  • Meine Familie, die viele Wochenenden verkraftet hat, an denen ich vom Schreiben abgelenkt war.

Get Effektiver Rost now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.