@@ -358,81 +358,81 @@ für Tests ein bekanntes Ergebnis zu haben. Dafür bräuchten wir keine Daten! I
358358Kapitel 10 wirst du sehen, wie man Traits definiert und sie für beliebige Typen
359359implementiert, einschließlich unit-artiker Strukturen.
360360
361- > ### Eigentümerschaft von Strukturdaten
362- >
363- > In der Strukturdefinition ` User ` in Listing 5-1 haben wir den Typ ` String `
364- > anstelle von ` &str ` verwendet. Dies ist eine bewusste Entscheidung, denn wir
365- > wollen, dass Instanzen dieser Struktur all ihre Daten besitzen und diese
366- > Daten so lange gültig sind, wie die gesamte Struktur gültig ist.
367- >
368- > Bei Strukturen ist es möglich, Referenzen auf Daten zu speichern, die im
369- > Besitz von etwas anderem sind, aber das erfordert die Verwendung von
370- > _ Lebensdauern _ , einer Rust-Funktionalität, die wir in Kapitel 10 besprechen
371- > werden. Die Lebensdauer stellt sicher, dass die von einer Struktur
372- > referenzierten Daten so lange gültig sind, wie die Struktur gültig ist.
373- > Angenommen, du versuchst eine Referenz in einer Struktur zu speichern, ohne
374- > eine Lebensdauer anzugeben, wird das nicht funktionieren:
375- >
376- > <span class =" filename " >Dateiname: src/main.rs</span >
377- >
378- > ``` rust,does_not_compile
379- > struct User {
380- > active: bool,
381- > username: &str,
382- > email: &str,
383- > sign_in_count: u64,
384- > }
385- >
386- > fn main() {
387- > let user1 = User {
388- > active: true,
389- > username: "benutzername123",
390- > email: "jemand@example.com",
391- > sign_in_count: 1,
392- > };
393- > }
394- > ```
395- >
396- > Der Compiler wird sich beschweren, dass die Lebensdauer nicht angegeben ist:
397- >
398- > ```console
399- > $ cargo run
400- > Compiling structs v0.1.0 (file:///projects/structs)
401- > error[E0106]: missing lifetime specifier
402- > --> src/main.rs:3:15
403- > |
404- > 3 | username: &str,
405- > | ^ expected named lifetime parameter
406- > |
407- > help: consider introducing a named lifetime parameter
408- > |
409- > 1 ~ struct User<'a> {
410- > 2 | active: bool,
411- > 3 ~ username: &'a str,
412- > |
413- >
414- > error[E0106]: missing lifetime specifier
415- > --> src/main.rs:4:12
416- > |
417- > 4 | email: &str,
418- > | ^ expected named lifetime parameter
419- > |
420- > help: consider introducing a named lifetime parameter
421- > |
422- > 1 ~ struct User<'a> {
423- > 2 | active: bool,
424- > 3 | username: &str,
425- > 4 ~ email: &'a str,
426- > |
427- >
428- > For more information about this error, try `rustc --explain E0106`.
429- > error: could not compile `structs` (bin "structs") due to 2 previous errors
430- > ```
431- >
432- > In Kapitel 10 werden wir klären, wie man diese Fehler behebt und Referenzen
433- > in Strukturen speichern kann. Aber für den Moment werden wir Fehler wie diese
434- > vermeiden, indem wir Typen wie `String` anstelle von Referenzen wie `&str`
435- > verwenden.
361+ ### Eigentümerschaft von Strukturdaten
362+
363+ In der Strukturdefinition ` User ` in Listing 5-1 haben wir den Typ ` String `
364+ anstelle von ` &str ` verwendet. Dies ist eine bewusste Entscheidung, denn wir
365+ wollen, dass Instanzen dieser Struktur all ihre Daten besitzen und diese Daten
366+ so lange gültig sind, wie die gesamte Struktur gültig ist.
367+
368+ Bei Strukturen ist es möglich, Referenzen auf Daten zu speichern, die im Besitz
369+ von etwas anderem sind, aber das erfordert die Verwendung von _ Lebensdauern _ ,
370+ einer Rust-Funktionalität, die wir in Kapitel 10 besprechen werden. Die
371+ Lebensdauer stellt sicher, dass die von einer Struktur referenzierten Daten so
372+ lange gültig sind, wie die Struktur gültig ist. Angenommen, du versuchst eine
373+ Referenz in einer Struktur zu speichern, ohne eine Lebensdauer anzugeben, wird
374+ das nicht funktionieren:
375+
376+ <span class =" filename " >Dateiname: src/main.rs</span >
377+
378+ ``` rust,does_not_compile
379+ struct User {
380+ active: bool,
381+ username: &str,
382+ email: &str,
383+ sign_in_count: u64,
384+ }
385+
386+ fn main() {
387+ let user1 = User {
388+ active: true,
389+ username: "benutzername123",
390+ email: "jemand@example.com",
391+ sign_in_count: 1,
392+ };
393+ }
394+ ```
395+
396+ Der Compiler wird sich beschweren, dass die Lebensdauer nicht angegeben ist:
397+
398+ ``` console
399+ $ cargo run
400+ Compiling structs v0.1.0 (file:///projects/structs)
401+ error[E0106]: missing lifetime specifier
402+ --> src/main.rs:3:15
403+ |
404+ 3 | username: &str,
405+ | ^ expected named lifetime parameter
406+ |
407+ help: consider introducing a named lifetime parameter
408+ |
409+ 1 ~ struct User<'a> {
410+ 2 | active: bool,
411+ 3 ~ username: &'a str,
412+ |
413+
414+ error[E0106]: missing lifetime specifier
415+ --> src/main.rs:4:12
416+ |
417+ 4 | email: &str,
418+ | ^ expected named lifetime parameter
419+ |
420+ help: consider introducing a named lifetime parameter
421+ |
422+ 1 ~ struct User<'a> {
423+ 2 | active: bool,
424+ 3 | username: &str,
425+ 4 ~ email: &'a str,
426+ |
427+
428+ For more information about this error, try `rustc --explain E0106`.
429+ error: could not compile `structs` (bin "structs") due to 2 previous errors
430+ ```
431+
432+ In Kapitel 10 werden wir klären, wie man diese Fehler behebt und Referenzen in
433+ Strukturen speichern kann. Aber für den Moment werden wir Fehler wie diese
434+ vermeiden, indem wir Typen wie ` String ` anstelle von Referenzen wie ` &str `
435+ verwenden.
436436
437437[ copy ] : ch04-01-what-is-ownership.html#reine-stack-daten-copy
438438[ move ] : ch04-01-what-is-ownership.html#variablen-und-daten-im-zusammenspiel-mit-move
0 commit comments