@@ -39,7 +39,8 @@ Die Liste der ableitbaren Merkmale in diesem Anhang ist nicht vollständig:
3939Bibliotheken können ` derive ` für ihre eigenen Merkmale implementieren, sodass
4040die Liste der Merkmale, die du mit ` derive ` verwenden kannst, wahrlich
4141unbegrenzt 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
6566Das Ableiten von ` PartialEq ` implementiert die Methode ` eq ` . Wenn ` PartialEq `
6667fü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
6970gleich sich selbst und nicht gleich den anderen Varianten.
7071
7172Das 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
7778Merkmal ` Eq ` kann nur auf Typen angewandt werden, die auch ` PartialEq `
7879implementieren, obwohl nicht alle Typen, die ` PartialEq ` implementieren, ` Eq `
7980implementieren 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
8384Ein 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
157158Implementierung von ` Clone ` hat, das die gleiche Aufgabe wie ` Copy ` erfüllt.
158159
159160Das 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
161162Code prägnanter macht.
162163
163164Alles, 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
170171nehmen und diese Instanz mithilfe einer Hash-Funktion auf einen Wert fester
171172Größe abzubilden. Das Ableiten von ` Hash ` implementiert die Methode ` hash ` . Die
172173abgeleitete 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
174175ebenfalls ` Hash ` implementieren, um ` Hash ` abzuleiten.
175176
176177Ein 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.
181182Das Merkmal ` Default ` erlaubt es dir, einen Standardwert für einen Typ zu
182183definieren. Das Ableiten von ` Default ` implementiert die Funktion ` default ` .
183184Die 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
185186müssen auch ` Default ` implementieren, um ` Default ` abzuleiten.
186187
187188Die Funktion ` Default::default ` wird häufig in Kombination mit der Syntax zur
188189Aktualisierung von Strukturen verwendet, die im Abschnitt [ „Instanzen aus
189190anderen Instanzen erzeugen mit der
190- Strukturaktualisierungssyntax“] [ creating-instances-from-other-instances-with- struct-update-syntax]
191+ Strukturaktualisierungssyntax“] [ struct-update-syntax ]
191192in Kapitel 5 besprochen wird. Du kannst einige Felder einer Struktur anpassen
192193und dann einen Standardwert für den Rest der Felder festlegen und verwenden,
193194indem du ` ...Default::default() ` schreibst.
194195
195196Das 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
0 commit comments