diff --git a/README.md b/README.md index eb0f1dd5..8fde34e3 100644 --- a/README.md +++ b/README.md @@ -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 **01.11.2023**. +Es enthält alle Änderungen des englischen Originals bis einschließlich zum **09.11.2023**. ## [📖 > Hier online lesen < 📖][rustbook-de] diff --git a/src/ch12-04-testing-the-librarys-functionality.md b/src/ch12-04-testing-the-librarys-functionality.md index 20e8ff65..4a29fc32 100644 --- a/src/ch12-04-testing-the-librarys-functionality.md +++ b/src/ch12-04-testing-the-librarys-functionality.md @@ -41,7 +41,7 @@ Codeblock 12-15 zeigt diesen Test, der sich noch nicht kompilieren lässt. Dateiname: src/lib.rs -```rust,does_not_compile +```rust,ignore,does_not_compile # use std::error::Error; # use std::fs; # @@ -51,7 +51,7 @@ Codeblock 12-15 zeigt diesen Test, der sich noch nicht kompilieren lässt. # } # # impl Config { -# pub fn new(args: &[String]) -> Result { +# pub fn build(args: &[String]) -> Result { # if args.len() < 3 { # return Err("Nicht genügend Argumente"); # } @@ -265,7 +265,7 @@ Beachte, dass dies noch nicht kompiliert. Dateiname: src/lib.rs -```rust,does_not_compile +```rust,ignore,does_not_compile # use std::error::Error; # use std::fs; # @@ -275,7 +275,7 @@ Beachte, dass dies noch nicht kompiliert. # } # # impl Config { -# pub fn new(args: &[String]) -> Result { +# pub fn build(args: &[String]) -> Result { # if args.len() < 3 { # return Err("Nicht genügend Argumente"); # } @@ -335,7 +335,7 @@ dies noch nicht kompiliert werden kann. Dateiname: src/lib.rs -```rust,does_not_compile +```rust,ignore,does_not_compile # use std::error::Error; # use std::fs; # @@ -345,7 +345,7 @@ dies noch nicht kompiliert werden kann. # } # # impl Config { -# pub fn new(args: &[String]) -> Result { +# pub fn build(args: &[String]) -> Result { # if args.len() < 3 { # return Err("Nicht genügend Argumente"); # } @@ -405,7 +405,7 @@ einen veränderbaren Vektor vor der `for`-Schleife erstellen und die Dateiname: src/lib.rs -```rust +```rust,ignore # use std::error::Error; # use std::fs; # @@ -415,7 +415,7 @@ einen veränderbaren Vektor vor der `for`-Schleife erstellen und die # } # # impl Config { -# pub fn new(args: &[String]) -> Result { +# pub fn build(args: &[String]) -> Result { # if args.len() < 3 { # return Err("Nicht genügend Argumente"); # } @@ -511,7 +511,7 @@ den Wert `contents`, den `run` aus der Datei liest, an die Funktion `search` Dateiname: src/lib.rs -```rust +```rust,ignore # use std::error::Error; # use std::fs; # @@ -521,7 +521,7 @@ den Wert `contents`, den `run` aus der Datei liest, an die Funktion `search` # } # # impl Config { -# pub fn new(args: &[String]) -> Result { +# pub fn build(args: &[String]) -> Result { # if args.len() < 3 { # return Err("Nicht genügend Argumente"); # } diff --git a/src/ch12-05-working-with-environment-variables.md b/src/ch12-05-working-with-environment-variables.md index f4f275ce..76ae1288 100644 --- a/src/ch12-05-working-with-environment-variables.md +++ b/src/ch12-05-working-with-environment-variables.md @@ -32,7 +32,7 @@ beiden Tests zu verdeutlichen, wie in Codeblock 12-20 gezeigt wird. # } # # impl Config { -# pub fn new(args: &[String]) -> Result { +# pub fn build(args: &[String]) -> Result { # if args.len() < 3 { # return Err("Nicht genügend Argumente"); # } @@ -144,7 +144,7 @@ wir prüfen, ob die Zeile die Abfrage enthält. # } # # impl Config { -# pub fn new(args: &[String]) -> Result { +# pub fn build(args: &[String]) -> Result { # if args.len() < 3 { # return Err("Nicht genügend Argumente"); # } @@ -293,18 +293,18 @@ nirgendwo initialisiert haben: Dateiname: src/lib.rs -```rust,does_not_compile +```rust,ignore,does_not_compile # use std::error::Error; # use std::fs; # pub struct Config { pub query: String, pub file_path: String, - pub case_sensitive: bool, + pub ignore_case: bool, } # # impl Config { -# pub fn new(args: &[String]) -> Result { +# pub fn build(args: &[String]) -> Result { # if args.len() < 3 { # return Err("Nicht genügend Argumente"); # } @@ -319,10 +319,10 @@ pub struct Config { # pub fn run(config: Config) -> Result<(), Box> { # let contents = fs::read_to_string(config.file_path)?; # -# let results = if config.case_sensitive { -# search(&config.query, &contents) -# } else { +# let results = if config.ignore_case { # search_case_insensitive(&config.query, &contents) +# } else { +# search(&config.query, &contents) # }; # # for line in results { @@ -401,18 +401,18 @@ Codeblock 12-22 gezeigt. Dies kompiliert noch immer nicht. Dateiname: src/lib.rs -```rust,does_not_compile +```rust,ignore,does_not_compile # use std::error::Error; # use std::fs; # # pub struct Config { # pub query: String, # pub file_path: String, -# pub case_sensitive: bool, +# pub ignore_case: bool, # } # # impl Config { -# pub fn new(args: &[String]) -> Result { +# pub fn build(args: &[String]) -> Result { # if args.len() < 3 { # return Err("Nicht genügend Argumente"); # } @@ -427,10 +427,10 @@ Codeblock 12-22 gezeigt. Dies kompiliert noch immer nicht. pub fn run(config: Config) -> Result<(), Box> { let contents = fs::read_to_string(config.file_path)?; - let results = if config.case_sensitive { - search(&config.query, &contents) - } else { + let results = if config.ignore_case { search_case_insensitive(&config.query, &contents) + } else { + search(&config.query, &contents) }; for line in results { @@ -523,11 +523,11 @@ use std::env; # pub struct Config { # pub query: String, # pub file_path: String, -# pub case_sensitive: bool, +# pub ignore_case: bool, # } # impl Config { - pub fn new(args: &[String]) -> Result { + pub fn build(args: &[String]) -> Result { if args.len() < 3 { return Err("Nicht genügend Argumente"); } @@ -535,12 +535,12 @@ impl Config { let query = args[1].clone(); let file_path = args[2].clone(); - let case_sensitive = env::var("IGNORE_CASE").is_err(); + let ignore_case = env::var("IGNORE_CASE").is_ok(); Ok(Config { query, file_path, - case_sensitive, + ignore_case, }) } } @@ -548,10 +548,10 @@ impl Config { # pub fn run(config: Config) -> Result<(), Box> { # let contents = fs::read_to_string(config.file_path)?; # -# let results = if config.case_sensitive { -# search(&config.query, &contents) -# } else { +# let results = if config.ignore_case { # search_case_insensitive(&config.query, &contents) +# } else { +# search(&config.query, &contents) # }; # # for line in results { @@ -692,7 +692,7 @@ To tell your name the livelong day To an admiring bog! ``` -Ausgezeichnet, wir haben auch Zeilen mit „to“! Unser `minigrep`-Programm kann +Ausgezeichnet, wir haben auch Zeilen mit „To“! Unser `minigrep`-Programm kann jetzt ohne Berücksichtigung von Groß-/Kleinschreibung suchen, gesteuert durch eine Umgebungsvariable. Jetzt weißt du, wie man Optionen verwaltet, die entweder mit Kommandozeilenargumenten oder Umgebungsvariablen gesetzt werden. diff --git a/src/ch12-06-writing-to-stderr-instead-of-stdout.md b/src/ch12-06-writing-to-stderr-instead-of-stdout.md index be137d35..5158d9b5 100644 --- a/src/ch12-06-writing-to-stderr-instead-of-stdout.md +++ b/src/ch12-06-writing-to-stderr-instead-of-stdout.md @@ -72,14 +72,13 @@ stattdessen `eprintln!` verwenden. fn main() { let args: Vec = env::args().collect(); - let config = Config::new(&args).unwrap_or_else(|err| { + let config = Config::build(&args).unwrap_or_else(|err| { eprintln!("Fehler beim Parsen der Argumente: {err}"); process::exit(1); }); if let Err(e) = minigrep::run(config) { eprintln!("Anwendungsfehler: {e}"); - process::exit(1); } }