Skip to content

Commit

Permalink
Merge pull request #385 from damoasda/update-2024-11
Browse files Browse the repository at this point in the history
Änderungen im Originalbuch bis zum 30.11.2024 nachziehen
  • Loading branch information
damoasda authored Dec 20, 2024
2 parents fd32f1c + 5f65634 commit b43d2d5
Show file tree
Hide file tree
Showing 83 changed files with 5,439 additions and 493 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
book/
.idea/
Grafiken
TODO.txt
TODO.md
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Das Buch „Die Programmiersprache Rust“ ist eine deutsche Gemeinschafts-Übersetzung
des [offiziellen Rust-Buchs][rustbook-en].
Es enthält alle Änderungen des englischen Originals bis einschließlich zum **05.10.2024**.
Es enthält alle Änderungen des englischen Originals bis einschließlich zum **30.11.2024**.

## [📖 > Hier online lesen < 📖][rustbook-de]

Expand All @@ -14,7 +14,7 @@ Die deutsche Übersetzung gibt es auch als **Taschenbuch** und als **E-Book**:

Schritte zum Bauen und Anschauen des Buchs:

1. mdBook installieren: `cargo install mdbook --vers "^0.4.40"`
1. mdBook installieren: `cargo install mdbook --vers "^0.4.43"`
2. Live-Vorschau-Server starten: `mdbook serve`
3. http://localhost:3000/ im Browser öffnen

Expand Down
48 changes: 28 additions & 20 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,29 +101,37 @@
- [Nebenläufigkeit mit gemeinsamem Zustand](ch16-03-shared-state.md)
- [Erweiterbare Nebenläufigkeit mit den Merkmalen (traits) `Sync` und `Send`](ch16-04-extensible-concurrency-sync-and-send.md)

- [Objektorientierte Sprachelemente von Rust](ch17-00-oop.md)
- [Charakteristiken objektorientierter Sprachen](ch17-01-what-is-oo.md)
- [Merkmalsobjekte (trait objects) die Werte unterschiedlicher Typen erlauben](ch17-02-trait-objects.md)
- [Ein objektorientiertes Entwurfsmuster implementieren](ch17-03-oo-design-patterns.md)
- [Async und Await](ch17-00-async-await.md)
- [Futures und die asynchrone Syntax](ch17-01-futures-and-syntax.md)
- [Nebenläufigkeit mit async](ch17-02-concurrency-with-async.md)
- [Arbeiten mit einer beliebigen Anzahl von Futures](ch17-03-more-futures.md)
- [Ströme (streams)](ch17-04-streams.md)
- [Merkmale für async](ch17-05-traits-for-async.md)
- [Futures, Aufgaben und Stränge](ch17-06-futures-tasks-threads.md)

- [Objektorientierte Sprachelemente von Rust](ch18-00-oop.md)
- [Charakteristiken objektorientierter Sprachen](ch18-01-what-is-oo.md)
- [Merkmalsobjekte (trait objects) die Werte unterschiedlicher Typen erlauben](ch18-02-trait-objects.md)
- [Ein objektorientiertes Entwurfsmuster implementieren](ch18-03-oo-design-patterns.md)

## Fortgeschrittene Themen

- [Muster (patterns) und Abgleich (matching)](ch18-00-patterns.md)
- [Alle Stellen an denen Muster (patterns) verwendet werden können](ch18-01-all-the-places-for-patterns.md)
- [Abweisbarkeit: Falls ein Muster (pattern) mal nicht passt](ch18-02-refutability.md)
- [Mustersyntax](ch18-03-pattern-syntax.md)

- [Fortgeschrittene Sprachelemente](ch19-00-advanced-features.md)
- [Unsicheres (unsafe) Rust](ch19-01-unsafe-rust.md)
- [Fortgeschrittene Merkmale (traits)](ch19-03-advanced-traits.md)
- [Fortgeschrittene Typen](ch19-04-advanced-types.md)
- [Erweiterte Funktionen und Funktionsabschlüsse (closures)](ch19-05-advanced-functions-and-closures.md)
- [Makros](ch19-06-macros.md)

- [Abschlussprojekt: Einen mehrsträngigen (multi-threaded) Webserver erstellen](ch20-00-final-project-a-web-server.md)
- [Einen einsträngigen (single-threaded) Webserver erstellen](ch20-01-single-threaded.md)
- [Unseren einsträngigen (single-threaded) Webserver in einen mehrsträngigen (multi-threaded) Webserver verwandeln](ch20-02-multithreaded.md)
- [Kontrolliertes Beenden und Aufräumen](ch20-03-graceful-shutdown-and-cleanup.md)
- [Muster (patterns) und Abgleich (matching)](ch19-00-patterns.md)
- [Alle Stellen an denen Muster (patterns) verwendet werden können](ch19-01-all-the-places-for-patterns.md)
- [Abweisbarkeit: Falls ein Muster (pattern) mal nicht passt](ch19-02-refutability.md)
- [Mustersyntax](ch19-03-pattern-syntax.md)

- [Fortgeschrittene Sprachelemente](ch20-00-advanced-features.md)
- [Unsicheres (unsafe) Rust](ch20-01-unsafe-rust.md)
- [Fortgeschrittene Merkmale (traits)](ch20-03-advanced-traits.md)
- [Fortgeschrittene Typen](ch20-04-advanced-types.md)
- [Erweiterte Funktionen und Funktionsabschlüsse (closures)](ch20-05-advanced-functions-and-closures.md)
- [Makros](ch20-06-macros.md)

- [Abschlussprojekt: Einen mehrsträngigen (multi-threaded) Webserver erstellen](ch21-00-final-project-a-web-server.md)
- [Einen einsträngigen (single-threaded) Webserver erstellen](ch21-01-single-threaded.md)
- [Unseren einsträngigen (single-threaded) Webserver in einen mehrsträngigen (multi-threaded) Webserver verwandeln](ch21-02-multithreaded.md)
- [Kontrolliertes Beenden und Aufräumen](ch21-03-graceful-shutdown-and-cleanup.md)

- [Anhang](appendix-00.md)
- [A - Schlüsselwörter](appendix-01-keywords.md)
Expand Down
10 changes: 4 additions & 6 deletions src/appendix-03-derivable-traits.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Die Liste der ableitbaren Merkmale in diesem Anhang ist nicht vollständig:
Bibliotheken können `derive` für ihre eigenen Merkmale implementieren, sodass
die Liste der Merkmale, die du mit `derive` verwenden kannst, wahrlich
unbegrenzt ist. Das Implementieren von `derive` verwendet ein prozedurales
Makro, das im Abschnitt [„Makros“][macros] in Kapitel 19 behandelt wird.
Makro, das im Abschnitt [„Makros“][macros] in Kapitel 20 behandelt wird.

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

Expand Down Expand Up @@ -197,10 +197,8 @@ z.B. auf Instanzen von `Option<T>` verwendest. Wenn die `Option<T>` den Wert
`None` hat, gibt die Methode `unwrap_or_default` das Ergebnis von
`Default::default` für den Typ `T` zurück, der in `Option<T>` gespeichert ist.

[creating-instances-from-other-instances-with-struct-update-syntax]:
ch05-01-defining-structs.html#instanzen-aus-anderen-instanzen-erzeugen-mit-der-strukturaktualisierungssyntax
[macros]: ch19-06-macros.html
[creating-instances-from-other-instances-with-struct-update-syntax]: ch05-01-defining-structs.html#instanzen-aus-anderen-instanzen-erzeugen-mit-der-strukturaktualisierungssyntax
[macros]: ch20-06-macros.html
[stack-only-data-copy]: ch04-01-what-is-ownership.html#nur-stapelspeicher-daten-kopieren-copy
[std-lib]: https://doc.rust-lang.org/std/index.html
[ways-variables-and-data-interact-clone]:
ch04-01-what-is-ownership.html#variablen-und-daten-im-zusammenspiel-mit-clone
[ways-variables-and-data-interact-clone]: ch04-01-what-is-ownership.html#variablen-und-daten-im-zusammenspiel-mit-clone
4 changes: 2 additions & 2 deletions src/appendix-04-useful-development-tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ warning: unused variable: `i`
|
= note: #[warn(unused_variables)] on by default

Finished dev [unoptimized + debuginfo] target(s) in 0.50s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.50s
```

Die Warnung empfiehlt, stattdessen `_i` als Namen zu verwenden: Der Unterstrich
Expand All @@ -77,7 +77,7 @@ Kommando `cargo fix` ausführen:
$ cargo fix
Checking myprogram v0.1.0 (file:///projects/myprogram)
Fixing src/main.rs (1 fix)
Finished dev [unoptimized + debuginfo] target(s) in 0.59s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.59s
```

Wenn wir uns *src/main.rs* noch einmal ansehen, werden wir sehen, dass
Expand Down
9 changes: 9 additions & 0 deletions src/ch01-01-installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,16 @@ lokale Dokumentation in deinem Browser zu öffnen.
Falls du dir nicht sicher bist, wie du einen Typ oder eine Funktion aus der
Standardbibliothek verwenden sollst, dann schau in der API-Dokumentation nach!

### Texteditoren und integrierte Entwicklungsumgebungen

Dieses Buch macht keine Annahmen darüber, welche Werkzeuge du für die
Erstellung von Rust-Code verwendest. So gut wie jeder Texteditor ist dafür
ausreichend! Viele Texteditoren und integrierte Entwicklungsumgebungen (IDEs)
haben jedoch integrierte Unterstützung für Rust. Eine aktuelle Liste von
Editoren und IDEs findest du auf der [Tools-Seite][tools] der Rust-Website.

[community]: https://www.rust-lang.org/community
[install]: https://www.rust-lang.org/tools/install
[msvc]: https://rust-lang.github.io/rustup/installation/windows-msvc.html
[otherinstall]: https://forge.rust-lang.org/infra/other-installation-methods.html
[tools]: https://www.rust-lang.org/tools
8 changes: 4 additions & 4 deletions src/ch01-03-hello-cargo.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ du dein Projekt, indem du den folgenden Befehl eingibst:
```console
$ cargo build
Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 2.85 secs
Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.85 secs
```

Dieser Befehl erzeugt eine ausführbare Datei in *target/debug/hello_cargo*
Expand Down Expand Up @@ -164,7 +164,7 @@ Datei mit einem einzigen Befehl auszuführen:

```console
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.0 secs
Running `target/debug/hello_cargo`
Hello, world!
```
Expand All @@ -183,7 +183,7 @@ Ausgabe gesehen:
```console
$ cargo run
Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.33 secs
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.33 secs
Running `target/debug/hello_cargo`
Hello, world!
```
Expand All @@ -195,7 +195,7 @@ ausführbare Datei:
```console
$ cargo check
Checking hello_cargo v0.1.0 (file:///projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.32 secs
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.32 secs
```

Warum willst du keine ausführbare Datei? Häufig ist `cargo check` viel
Expand Down
48 changes: 26 additions & 22 deletions src/ch02-00-guessing-game-tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ name = "guessing_game"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
```

Expand All @@ -60,7 +58,7 @@ Schritt aus mit dem Befehl `cargo run`:
```console
$ cargo run
Compiling guessing_game v0.1.0 (file:///projects/guessing_game)
Finished dev [unoptimized + debuginfo] target(s) in 1.50s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.50s
Running `target/debug/guessing_game`
Hello, world!
```
Expand Down Expand Up @@ -394,7 +392,7 @@ help: use `let _ = ...` to ignore the resulting value
| +++++++

warning: `guessing_game` (bin "guessing_game") generated 1 warning
Finished dev [unoptimized + debuginfo] target(s) in 0.59s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.59s
```

Rust warnt, dass du den von `read_line` zurückgegebenen `Result`-Wert nicht
Expand Down Expand Up @@ -457,7 +455,7 @@ Testen wir den ersten Teil des Ratespiels. Führe ihn mit `cargo run` aus:
```console
$ cargo run
Compiling guessing_game v0.1.0 (file:///projects/guessing_game)
Finished dev [unoptimized + debuginfo] target(s) in 6.44s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.44s
Running `target/debug/guessing_game`
Rate die Zahl!
Bitte gib deine Schätzung ein.
Expand Down Expand Up @@ -524,22 +522,28 @@ gezeigt.
```console
$ cargo build
Updating crates.io index
Downloaded rand v0.8.5
Downloaded libc v0.2.127
Downloaded getrandom v0.2.7
Downloaded cfg-if v1.0.0
Downloaded ppv-lite86 v0.2.16
Downloaded rand_chacha v0.3.1
Downloaded rand_core v0.6.3
Compiling libc v0.2.127
Compiling getrandom v0.2.7
Locking 16 packages to latest compatible versions
Adding wasi v0.11.0+wasi-snapshot-preview1 (latest: v0.13.3+wasi-0.2.2)
Adding zerocopy v0.7.35 (latest: v0.8.9)
Adding zerocopy-derive v0.7.35 (latest: v0.8.9)
Downloaded syn v2.0.87
Downloaded 1 crate (278.1 KB) in 0.16s
Compiling proc-macro2 v1.0.89
Compiling unicode-ident v1.0.13
Compiling libc v0.2.161
Compiling cfg-if v1.0.0
Compiling ppv-lite86 v0.2.16
Compiling rand_core v0.6.3
Compiling byteorder v1.5.0
Compiling getrandom v0.2.15
Compiling rand_core v0.6.4
Compiling quote v1.0.37
Compiling syn v2.0.87
Compiling zerocopy-derive v0.7.35
Compiling zerocopy v0.7.35
Compiling ppv-lite86 v0.2.20
Compiling rand_chacha v0.3.1
Compiling rand v0.8.5
Compiling guessing_game v0.1.0 (file:///projects/guessing_game)
Finished dev [unoptimized + debuginfo] target(s) in 2.53s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.69s
```

<span class="caption">Codeblock 2-2: Die Ausgabe beim Ausführen von `cargo
Expand Down Expand Up @@ -576,7 +580,7 @@ sie dann speicherst und neu baust, siehst du nur zwei Zeilen Ausgabe:
```console
$ cargo build
Compiling guessing_game v0.1.0 (file:///projects/guessing_game)
Finished dev [unoptimized + debuginfo] target(s) in 2.53 secs
Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.53 secs
```

Diese Zeilen zeigen, dass Cargo nur den Build mit deiner winzigen Änderung an
Expand Down Expand Up @@ -716,7 +720,7 @@ Versuche, das Programm einige Male auszuführen:
```console
$ cargo run
Compiling guessing_game v0.1.0 (file:///projects/guessing_game)
Finished dev [unoptimized + debuginfo] target(s) in 2.53s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.53s
Running `target/debug/guessing_game`
Rate die Zahl!
Die Geheimzahl ist: 7
Expand All @@ -725,7 +729,7 @@ Bitte gib deine Schätzung ein.
Du hast geschätzt: 4

$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.02s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.02s
Running `target/debug/guessing_game`
Rate die Zahl!
Die Geheimzahl ist: 83
Expand Down Expand Up @@ -972,7 +976,7 @@ Lassen wir das Programm jetzt laufen:
```console
$ cargo run
Compiling guessing_game v0.1.0 (file:///projects/guessing_game)
Finished dev [unoptimized + debuginfo] target(s) in 0.43s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.43s
Running `target/debug/guessing_game`
Rate die Zahl!
Die Geheimzahl ist: 58
Expand Down Expand Up @@ -1055,7 +1059,7 @@ gezeigt:
```console
$ cargo run
Compiling guessing_game v0.1.0 (file:///projects/guessing_game)
Finished dev [unoptimized + debuginfo] target(s) in 1.50s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.50s
Running `target/debug/guessing_game`
Rate die Zahl!
Die Geheimzahl ist: 59
Expand Down
4 changes: 2 additions & 2 deletions src/ch03-01-variables-and-mutability.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ Wenn wir das Programm jetzt ausführen, bekommen wir dies:
```console
$ cargo run
Compiling variables v0.1.0 (file:///projects/variables)
Finished dev [unoptimized + debuginfo] target(s) in 0.30s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.30s
Running `target/debug/variables`
Der Wert von x ist: 5
Der Wert von x ist: 6
Expand Down Expand Up @@ -208,7 +208,7 @@ wieder zu `6`. Wenn wir dieses Programm ausführen, wird es folgendes ausgeben:
```console
$ cargo run
Compiling variables v0.1.0 (file:///projects/variables)
Finished dev [unoptimized + debuginfo] target(s) in 0.31s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.31s
Running `target/debug/variables`
Der Wert von x im inneren Gültigkeitsbereich ist: 12
Der Wert von x ist: 6
Expand Down
4 changes: 1 addition & 3 deletions src/ch03-02-data-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,7 @@ fn main() {
}
```

Fließkommazahlen werden nach dem IEEE-754-Standard dargestellt. Der Typ `f32`
ist eine Fließkommazahl mit einfacher Genauigkeit und `f64` mit doppelter
Genauigkeit.
Fließkommazahlen werden nach dem IEEE-754-Standard dargestellt.

#### Numerische Operationen

Expand Down
8 changes: 4 additions & 4 deletions src/ch03-03-how-functions-work.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ weiter zu erforschen. Platziere das Beispiel `another_function` in
```console
$ cargo run
Compiling functions v0.1.0 (file:///projects/functions)
Finished dev [unoptimized + debuginfo] target(s) in 0.28s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.28s
Running `target/debug/functions`
Hallo Welt!
Eine andere Funktion.
Expand Down Expand Up @@ -84,7 +84,7 @@ erhalten:
```console
$ cargo run
Compiling functions v0.1.0 (file:///projects/functions)
Finished dev [unoptimized + debuginfo] target(s) in 1.21s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.21s
Running `target/debug/functions`
Der Wert von x ist: 5
```
Expand Down Expand Up @@ -129,7 +129,7 @@ das vorhergehende Beispiel und führe es mit `cargo run` aus:
```console
$ cargo run
Compiling functions v0.1.0 (file:///projects/functions)
Finished dev [unoptimized + debuginfo] target(s) in 0.31s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.31s
Running `target/debug/functions`
Das Maß ist: 5h
```
Expand Down Expand Up @@ -293,7 +293,7 @@ sollte wie folgt aussehen:
```console
$ cargo run
Compiling functions v0.1.0 (file:///projects/functions)
Finished dev [unoptimized + debuginfo] target(s) in 0.30s
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.30s
Running `target/debug/functions`
Der Wert von x ist: 5
```
Expand Down
Loading

0 comments on commit b43d2d5

Please sign in to comment.