diff --git a/src/doc/book/error-handling.md b/src/doc/book/error-handling.md index be60ea8f81fc3..8d392655cb3ff 100644 --- a/src/doc/book/error-handling.md +++ b/src/doc/book/error-handling.md @@ -1795,6 +1795,10 @@ To convert this to proper error handling, we need to do the following: Let's try it: ```rust,ignore +use std::error::Error; + +// The rest of the code before this is unchanged + fn search> (file_path: P, city: &str) -> Result, Box> { @@ -1903,8 +1907,13 @@ let city = if !matches.free.is_empty() { return; }; -for pop in search(&data_file, &city) { - println!("{}, {}: {:?}", pop.city, pop.country, pop.count); +match search(&data_file, &city) { + Ok(pops) => { + for pop in pops { + println!("{}, {}: {:?}", pop.city, pop.country, pop.count); + } + } + Err(err) => println!("{}", err) } ... ``` @@ -1927,6 +1936,10 @@ that it is generic on some type parameter `R` that satisfies `io::Read`. Another way is to just use trait objects: ```rust,ignore +use std::io; + +// The rest of the code before this is unchanged + fn search> (file_path: &Option

, city: &str) -> Result, Box> {