Skip to content

Commit e61e7b0

Browse files
authored
Merge pull request #406 from damoasda/master
Layout verbessern
2 parents fc0370a + ac7415b commit e61e7b0

1 file changed

Lines changed: 75 additions & 75 deletions

File tree

src/ch05-01-defining-structs.md

Lines changed: 75 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -358,81 +358,81 @@ für Tests ein bekanntes Ergebnis zu haben. Dafür bräuchten wir keine Daten! I
358358
Kapitel 10 wirst du sehen, wie man Traits definiert und sie für beliebige Typen
359359
implementiert, 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

Comments
 (0)