Skip to content

Commit f4215be

Browse files
authored
Merge pull request #399 from damoasda/master
Neue Übersetzungen und Korrekturen
2 parents 34ad6e6 + 9fde582 commit f4215be

13 files changed

Lines changed: 80 additions & 75 deletions

.github/workflows/pages-update.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
toolchain: stable
1717

1818
- name: Install mdbook
19-
run: cargo install mdbook --vers "^0.4.40" --no-default-features
19+
run: cargo install mdbook --vers "^0.5.2" --no-default-features
2020

2121
- name: Build Book
2222
run: mdbook build

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Die deutsche Übersetzung gibt es auch als **Taschenbuch** und als **E-Book**:
1414

1515
Schritte zum Bauen und Anschauen des Buchs:
1616

17-
1. mdBook installieren: `cargo install mdbook --vers "^0.4.47"`
17+
1. mdBook installieren: `cargo install mdbook --vers "^0.5.2"`
1818
2. Live-Vorschau-Server starten: `mdbook serve`
1919
3. http://localhost:3000/ im Browser öffnen
2020

src/SUMMARY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,6 @@
138138
- [B - Operatoren und Symbole](appendix-02-operators.md)
139139
- [C - Ableitbare Merkmale (traits)](appendix-03-derivable-traits.md)
140140
- [D - Nützliche Entwicklungswerkzeuge](appendix-04-useful-development-tools.md)
141-
- [E - Ausgaben](appendix-05-editions.md)
141+
- [E - Editionen](appendix-05-editions.md)
142142
- [F - Übersetzungen des Buchs](appendix-06-translation.md)
143143
- [G - Wie Rust erstellt wird und „nächtliches Rust“](appendix-07-nightly-rust.md)

src/appendix-01-keywords.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@
33
Die folgende Liste enthält Schlüsselwörter, die für die gegenwärtige oder
44
zukünftige Verwendung durch die Sprache Rust reserviert sind. Als solche können
55
sie nicht als Bezeichner verwendet werden (außer als Roh-Bezeichner, die wir im
6-
Abschnitt [„Roh-Bezeichner“][raw-identifiers] besprechen werden). Bezeichner
6+
Abschnitt [„Roh-Bezeichner“][raw-identifiers] besprechen). _Bezeichner_
77
sind Namen von Funktionen, Variablen, Parametern, Strukturfeldern
88
(struct fields), Modulen, Kisten (crates), Konstanten, Makros, statischen
99
Werten, Attributen, Typen, Merkmalen (traits) und Lebensdauern (lifetimes).
1010

11-
[raw-identifiers]: #roh-bezeichner
12-
1311
### Derzeit verwendete Schlüsselwörter
1412

1513
Nachstehend findest du eine Liste der derzeit verwendeten Schlüsselwörter mit
@@ -143,12 +141,13 @@ uns mehr Freiheit bei der Wahl der Bezeichner und ermöglicht uns die
143141
Integration in Programme, die in einer Sprache geschrieben wurden, in der diese
144142
Wörter keine Schlüsselwörter sind. Darüber hinaus ermöglicht dir der
145143
Roh-Bezeichner das Verwenden von Bibliotheken, die in einer anderen
146-
Rust-Ausgabe, als deine Kiste verwendet, geschrieben wurden. Zum Beispiel ist
147-
`try` in Ausgabe 2015 kein Schlüsselwort, in den Ausgaben 2018, 2021 und 2024
148-
aber schon. Wenn du auf eine Bibliothek angewiesen bist, die mit Ausgabe 2015
144+
Rust-Edition, als deine Kiste verwendet, geschrieben wurden. Zum Beispiel ist
145+
`try` in Edition 2015 kein Schlüsselwort, in den Editionen 2018, 2021 und 2024
146+
aber schon. Wenn du auf eine Bibliothek angewiesen bist, die mit Edition 2015
149147
geschrieben wurde und eine Funktion `try` hat, musst du die
150148
Roh-Bezeichner-Syntax verwenden, in diesem Fall `r#try`, um diese Funktion von
151-
deinem Code in einer neueren Ausgabe aus aufzurufen. Siehe [Anhang
152-
E][appendix-e] für weitere Informationen zu Ausgaben.
149+
deinem Code in einer neueren Edition aus aufzurufen. Siehe [Anhang
150+
E][appendix-e] für weitere Informationen zu Editionen.
153151

154152
[appendix-e]: appendix-05-editions.html
153+
[raw-identifiers]: #roh-bezeichner

src/appendix-02-operators.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ Merkmal (trait) aufgeführt, mit dem dieser Operator überladen werden kann.
7575

7676
### Nicht-Operator-Symbole
7777

78-
Die folgende Liste enthält alle Symbole, die nicht als Operatoren fungieren,
78+
Die folgende Tabelle enthält alle Symbole, die nicht als Operatoren fungieren,
7979
d.h. sich nicht wie ein Funktions- oder Methodenaufruf verhalten.
8080

8181
Tabelle B-2 zeigt Symbole, die für sich allein stehen und an verschiedenen
@@ -102,17 +102,17 @@ Modulhierarchie eines Elements vorkommen.
102102

103103
<span class="caption">Tabelle B-3: Pfad-bezogene Syntax</span>
104104

105-
| Symbol | Erklärung |
106-
|:-------|:-------------------|
107-
| `ident::ident` | Namensraum-Pfad |
108-
| `::path` | Pfad relativ zum externen Präludium, auf dem alle anderen Kisten basieren<br> (d.h. ein explizit absoluter Pfad inklusive Kistenname) |
109-
| `self::path` | Pfad relativ zum aktuellen Modul<br> (d.h. ein explizit relativer Pfad) |
110-
| `super::path` | Pfad relativ zum Elternmodul |
111-
| `type::ident`,<br> `<type as trait>::ident` | Zugehörige Konstanten, Funktionen<br> und Typen |
112-
| `<type>::...` | Zugehöriges Element für einen Typ,<br> der nicht direkt benannt werden kann<br> (z.B. `<&T>::...`, `<[T]>:::...` usw.) |
113-
| `trait::method(...)` | Methodenaufruf durch Angeben des<br> Merkmals eindeutig machen |
114-
| `type::method(...)` | Methodenaufruf durch Angeben des<br> Typs eindeutig machen |
115-
| `<type as trait>::method(...)` | Methodenaufruf durch Angeben des<br> Merkmals und Typs eindeutig machen |
105+
| Symbol | Erklärung |
106+
|:-------|:--------------------------------------------------------------------------------------------------------------------------------|
107+
| `ident::ident` | Namensraum-Pfad |
108+
| `::path` | Pfad relativ zur Kistenwurzel, auf dem alle anderen Kisten basieren<br> (d.h. ein explizit absoluter Pfad inklusive Kistenname) |
109+
| `self::path` | Pfad relativ zum aktuellen Modul<br> (d.h. ein explizit relativer Pfad) |
110+
| `super::path` | Pfad relativ zum Elternmodul |
111+
| `type::ident`,<br> `<type as trait>::ident` | Zugehörige Konstanten, Funktionen<br> und Typen |
112+
| `<type>::...` | Zugehöriges Element für einen Typ,<br> der nicht direkt benannt werden kann<br> (z.B. `<&T>::...`, `<[T]>:::...` usw.) |
113+
| `trait::method(...)` | Methodenaufruf durch Angeben des<br> Merkmals eindeutig machen |
114+
| `type::method(...)` | Methodenaufruf durch Angeben des<br> Typs eindeutig machen |
115+
| `<type as trait>::method(...)` | Methodenaufruf durch Angeben des<br> Merkmals und Typs eindeutig machen |
116116

117117
Tabelle B-4 zeigt Symbole, die im Zusammenhang mit generischen Typparametern
118118
auftreten.

src/appendix-03-derivable-traits.md

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ Die Liste der ableitbaren Merkmale in diesem Anhang ist nicht vollständig:
3939
Bibliotheken können `derive` für ihre eigenen Merkmale implementieren, sodass
4040
die Liste der Merkmale, die du mit `derive` verwenden kannst, wahrlich
4141
unbegrenzt ist. Das Implementieren von `derive` verwendet ein prozedurales
42-
Makro, das im Abschnitt [„Makros“][macros] in Kapitel 20 behandelt wird.
42+
Makro, das im Abschnitt [„Wie man ein benutzerdefiniertes Makro mit `derive`
43+
schreibt“][custom-derive-macros] in Kapitel 20 behandelt wird.
4344

4445
### `Debug` für die Programmierer-Ausgabe
4546

@@ -64,8 +65,8 @@ prüfen und ermöglicht das Verwenden der Operatoren `==` und `!=`.
6465

6566
Das Ableiten von `PartialEq` implementiert die Methode `eq`. Wenn `PartialEq`
6667
für Strukturen abgeleitet wird, sind zwei Instanzen nur dann gleich, wenn
67-
_alle_ Felder gleich sind, und die Instanzen sind nicht gleich, wenn wenigstens
68-
ein Feld nicht gleich ist. Beim Ableiten für Aufzählungen ist jede Variante
68+
_alle_ Felder gleich sind, und die Instanzen sind nicht gleich, wenn _wenigstens
69+
ein_ Feld nicht gleich ist. Beim Ableiten für Aufzählungen ist jede Variante
6970
gleich sich selbst und nicht gleich den anderen Varianten.
7071

7172
Das Merkmal `PartialEq` ist beispielsweise beim Verwenden des Makros
@@ -77,8 +78,8 @@ für jeden Wert des annotierten Typs der Wert gleich sich selbst ist. Das
7778
Merkmal `Eq` kann nur auf Typen angewandt werden, die auch `PartialEq`
7879
implementieren, obwohl nicht alle Typen, die `PartialEq` implementieren, `Eq`
7980
implementieren können. Ein Beispiel dafür sind Fließkomma-Zahlentypen: Die
80-
Implementierung von Fließkomma-Zahlen besagt, dass zwei Instanzen des
81-
Keine-Zahl-Wertes (`NaN`) nicht gleichwertig sind.
81+
Implementierung von Fließkomma-Zahlen besagt, dass zwei Instanzen des Wertes
82+
`NaN` nicht vergleichbar sind.
8283

8384
Ein Beispiel dafür, wann `Eq` erforderlich ist, ist für Schlüssel in einer
8485
`HashMap<K, V>`, damit `HashMap<K, V>` erkennen kann, ob zwei Schlüssel gleich
@@ -157,7 +158,7 @@ implementieren. Du kannst das Merkmal `Copy` nur auf Typen anwenden, die auch
157158
Implementierung von `Clone` hat, das die gleiche Aufgabe wie `Copy` erfüllt.
158159

159160
Das Merkmal `Copy` ist selten erforderlich; Typen, die `Copy` implementieren,
160-
verfügen über Optimierungen, d. h. du musst nicht `clone` aufrufen, was den
161+
verfügen über Optimierungen, d.h. du musst nicht `clone` aufrufen, was den
161162
Code prägnanter macht.
162163

163164
Alles, was mit `Copy` möglich ist, kannst du auch mit `Clone` erreichen, aber
@@ -170,7 +171,7 @@ Das Merkmal `Hash` erlaubt es dir, eine Instanz eines Typs beliebiger Größe zu
170171
nehmen und diese Instanz mithilfe einer Hash-Funktion auf einen Wert fester
171172
Größe abzubilden. Das Ableiten von `Hash` implementiert die Methode `hash`. Die
172173
abgeleitete Implementierung der Methode `hash` kombiniert das Ergebnis des
173-
Aufrufs von `hash` für alle Teile des Typs, d. h. alle Felder oder Werte müssen
174+
Aufrufs von `hash` für alle Teile des Typs, d.h. alle Felder oder Werte müssen
174175
ebenfalls `Hash` implementieren, um `Hash` abzuleiten.
175176

176177
Ein Beispiel dafür, wann `Hash` erforderlich ist, ist das Speichern von
@@ -181,24 +182,24 @@ Schlüsseln in einer `HashMap<K, V>`, um Daten effizient zu speichern.
181182
Das Merkmal `Default` erlaubt es dir, einen Standardwert für einen Typ zu
182183
definieren. Das Ableiten von `Default` implementiert die Funktion `default`.
183184
Die abgeleitete Implementierung der Funktion `default` ruft die Funktion
184-
`default` für jeden Teil des Typs auf, d. h. alle Felder oder Werte in dem Typ
185+
`default` für jeden Teil des Typs auf, d.h. alle Felder oder Werte in dem Typ
185186
müssen auch `Default` implementieren, um `Default` abzuleiten.
186187

187188
Die Funktion `Default::default` wird häufig in Kombination mit der Syntax zur
188189
Aktualisierung von Strukturen verwendet, die im Abschnitt [„Instanzen aus
189190
anderen Instanzen erzeugen mit der
190-
Strukturaktualisierungssyntax“][creating-instances-from-other-instances-with-struct-update-syntax]
191+
Strukturaktualisierungssyntax“][struct-update-syntax]
191192
in Kapitel 5 besprochen wird. Du kannst einige Felder einer Struktur anpassen
192193
und dann einen Standardwert für den Rest der Felder festlegen und verwenden,
193194
indem du `...Default::default()` schreibst.
194195

195196
Das Merkmal `Default` ist erforderlich, wenn du die Methode `unwrap_or_default`
196-
z. B. auf Instanzen von `Option<T>` verwendest. Wenn die `Option<T>` den Wert
197+
z.B. auf Instanzen von `Option<T>` verwendest. Wenn die `Option<T>` den Wert
197198
`None` hat, gibt die Methode `unwrap_or_default` das Ergebnis von
198199
`Default::default` für den Typ `T` zurück, der in `Option<T>` gespeichert ist.
199200

200-
[creating-instances-from-other-instances-with-struct-update-syntax]: ch05-01-defining-structs.html#instanzen-aus-anderen-instanzen-erzeugen-mit-der-strukturaktualisierungssyntax
201-
[macros]: ch20-05-macros.html
201+
[custom-derive-macros]: ch20-05-macros.html#wie-man-ein-benutzerdefiniertes-makro-mit-derive-schreibt
202202
[stack-only-data-copy]: ch04-01-what-is-ownership.html#nur-stapelspeicher-daten-kopieren-copy
203203
[std-lib]: https://doc.rust-lang.org/std/index.html
204+
[struct-update-syntax]: ch05-01-defining-structs.html#instanzen-aus-anderen-instanzen-erzeugen-mit-der-strukturaktualisierungssyntax
204205
[ways-variables-and-data-interact-clone]: ch04-01-what-is-ownership.html#variablen-und-daten-im-zusammenspiel-mit-clone

src/appendix-04-useful-development-tools.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ Die Variable `x` ist jetzt unveränderlich, und die Warnung erscheint nicht
9595
mehr.
9696

9797
Du kannst den Befehl `cargo fix` auch dazu verwenden, deinen Code zwischen
98-
verschiedenen Rust-Ausgaben zu konvertieren. Die Ausgaben sind in [Anhang
98+
verschiedenen Rust-Editionen zu konvertieren. Die Editionen sind in [Anhang
9999
E][appendix-e] aufgeführt.
100100

101101
### Mehr statische Codeanalyse mit Clippy

src/appendix-05-editions.md

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
## Anhang E: Ausgaben
1+
## Anhang E: Editionen
22

3-
In Kapitel 1 hast du gesehen, dass `cargo new` Metadaten zur Ausgabe (edition)
3+
In Kapitel 1 hast du gesehen, dass `cargo new` Metadaten zur Edition
44
in deiner Datei _Cargo.toml_ hinzufügt. Dieser Anhang erläutert, was das
55
bedeutet!
66

@@ -13,57 +13,58 @@ Veröffentlichung zu Veröffentlichung kann es schwierig sein, zurückzublicken
1313
und zu sagen: "Wow, zwischen Rust 1.10 und Rust 1.31 hat sich Rust sehr
1414
verändert!
1515

16-
Etwa alle drei Jahre gibt das Rust-Team eine neue _Rust-Ausgabe_ (edition)
17-
heraus. Jede Ausgabe fasst die neuen Funktionalitäten in einem übersichtlichen
16+
Etwa alle drei Jahre gibt das Rust-Team eine neue _Rust-Edition_
17+
heraus. Jede Edition fasst die neuen Funktionalitäten in einem übersichtlichen
1818
Paket mit vollständig aktualisierter Dokumentation und Werkzeugausstattung
19-
zusammen. Neue Ausgaben werden im Rahmen des üblichen sechswöchigen
19+
zusammen. Neue Editionen werden im Rahmen des üblichen sechswöchigen
2020
Freigabeprozesses ausgeliefert.
2121

22-
Ausgaben dienen unterschiedlichen Zwecken für verschiedene Menschen:
22+
Editionen dienen unterschiedlichen Zwecken für verschiedene Menschen:
2323

24-
- Für aktive Rust-Nutzer fasst eine neue Ausgabe inkrementelle Änderungen in
24+
- Für aktive Rust-Nutzer fasst eine neue Edition inkrementelle Änderungen in
2525
einem leicht verständlichen Paket zusammen.
26-
- Für Nicht-Nutzer signalisiert eine neue Ausgabe, dass einige wichtige
26+
- Für Nicht-Nutzer signalisiert eine neue Edition, dass einige wichtige
2727
Fortschritte hinzugekommen sind, sodass sich ein erneuter Blick auf Rust
2828
lohnen könnte.
29-
- Für diejenigen, die Rust entwickeln, stellt eine neue Ausgabe einen
29+
- Für diejenigen, die Rust entwickeln, stellt eine neue Edition einen
3030
Treffpunkt für das gesamte Projekt dar.
3131

32-
Zum Verfassungszeitpunkt dieses Artikels sind vier Rust-Ausgaben verfügbar:
32+
Zum Verfassungszeitpunkt dieses Artikels sind vier Rust-Editionen verfügbar:
3333
Rust 2015, Rust 2018, Rust 2021 und Rust 2024. Dieses Buch wurde unter
34-
Verwendung der Rust-Ausgabe 2024 geschrieben.
34+
Verwendung der Rust-Edition 2024 geschrieben.
3535

36-
Der Schlüssel `edition` in _Cargo.toml_ gibt an, welche Ausgabe der Compiler
36+
Der Schlüssel `edition` in _Cargo.toml_ gibt an, welche Edition der Compiler
3737
für deinen Code verwenden soll. Wenn der Schlüssel nicht existiert, verwendet
3838
Rust aus Gründen der Abwärtskompatibilität die Edition `2015`.
3939

40-
Jedes Projekt kann sich für eine Ausgabe abweichend von der Standardausgabe
41-
2015 entscheiden. Ausgaben können inkompatible Änderungen enthalten, z.B. die
40+
Jedes Projekt kann sich für eine Edition abweichend von der Standard-Edition
41+
2015 entscheiden. Editionen können inkompatible Änderungen enthalten, z.B. die
4242
Aufnahme eines neuen Schlüsselworts, das mit Bezeichnern im Code in Konflikt
4343
steht. Selbst wenn du dich nicht für diese Änderungen entscheidest, wird dein
4444
Code weiterhin kompilieren, auch wenn du die verwendete
4545
Rust-Compiler-Version aktualisierst.
4646

47-
Alle Rust-Compiler-Versionen unterstützen jede Ausgabe, die vor der
47+
Alle Rust-Compiler-Versionen unterstützen jede Edition, die vor der
4848
Veröffentlichung dieses Compilers existierte, und es können Kisten (crates)
49-
aller unterstützten Ausgaben miteinander verknüpft werden. Ausgabenänderungen
49+
aller unterstützten Editionen miteinander verknüpft werden. Editionsänderungen
5050
wirken sich nur auf die Art und Weise aus, wie der Compiler anfangs den Code
5151
analysiert. Wenn du also Rust 2015 verwendest und eine deiner Abhängigkeiten
5252
Rust 2018 verwendet, wird dein Projekt diese Abhängigkeit kompilieren und
5353
nutzen können. Die umgekehrte Situation, in der dein Projekt Rust 2018
5454
und eine Abhängigkeit Rust 2015 verwendet, funktioniert ebenfalls.
5555

56-
Um es klar zu sagen: Die meisten Funktionen werden in allen Ausgaben verfügbar
57-
sein. Entwickler, die eine beliebige Rust-Ausgabe verwenden, werden auch
56+
Um es klar zu sagen: Die meisten Funktionen werden in allen Editionen verfügbar
57+
sein. Entwickler, die eine beliebige Rust-Edition verwenden, werden auch
5858
weiterhin Verbesserungen sehen, wenn neue stabile Versionen erstellt werden. In
5959
einigen Fällen, vor allem wenn neue Schlüsselwörter hinzugefügt werden, sind
60-
einige neue Funktionalitäten jedoch möglicherweise erst in späteren Ausgaben
61-
verfügbar. Du wirst die Ausgabe wechseln müssen, wenn du die Vorteile solcher
60+
einige neue Funktionalitäten jedoch möglicherweise erst in späteren Editionen
61+
verfügbar. Du wirst die Edition wechseln müssen, wenn du die Vorteile solcher
6262
Funktionalitäten nutzen möchtest.
6363

64-
Für weitere Einzelheiten schaue in den [*Ausgabe-Leitfaden* (Edition
65-
Guide)][edition-guide], einem vollständigen Buch über die Rust-Ausgaben, das
66-
die Unterschiede zwischen den Ausgaben auflistet und erläutert, wie du deinen
67-
Code automatisch per `cargo fix` auf eine neue Ausgabe aktualisieren kannst.
64+
Für weitere Einzelheiten schaue in den [_Editions-Leitfaden (Edition
65+
Guide)_][edition-guide]. Das ist ein vollständiges Buch über die Rust-Editionen,
66+
das die Unterschiede zwischen den Editionen auflistet und erläutert und wie du
67+
deinen Code automatisch per `cargo fix` auf eine neue Edition aktualisieren
68+
kannst.
6869

6970
[edition-guide]: https://doc.rust-lang.org/stable/edition-guide/

src/appendix-06-translation.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ Für Ressourcen in anderen Sprachen als Englisch. Die meisten sind noch in
44
Arbeit; siehe das [Label `Translations`][label], um zu helfen oder uns über
55
eine neue Übersetzung zu informieren!
66

7-
[label]: https://github.com/rust-lang/book/issues?q=is%3Aopen+is%3Aissue+label%3ATranslations
8-
97
- [Português (BR)](https://github.com/rust-br/rust-book-pt-br)
108
- [Português (PT)](https://github.com/nunojesus/rust-book-pt-pt)
119
- 简体中文: [KaiserY/trpl-zh-cn](https://github.com/KaiserY/trpl-zh-cn), [gnu4cn/rust-lang-Zh_CN](https://github.com/gnu4cn/rust-lang-Zh_CN)
@@ -27,3 +25,9 @@ eine neue Übersetzung zu informieren!
2725
- [हिंदी](https://github.com/venkatarun95/rust-book-hindi)
2826
- [ไทย](https://github.com/rust-lang-th/book-th)
2927
- [Danske](https://github.com/DanKHansen/book-dk)
28+
- [O'zbek](https://github.com/rust-lang-uz/book)
29+
- [Tiếng Việt](https://github.com/tuanemdev/rust-book-vn)
30+
- [Italiano](https://nixxo.github.io/rust-lang-book-it/)
31+
- [বাংলা](https://github.com/IsmailHosenIsmailJames/rust-book-bn)
32+
33+
[label]: https://github.com/rust-lang/book/issues?q=is%3Aopen+is%3Aissue+label%3ATranslations

0 commit comments

Comments
 (0)