diff --git a/minigrep/src/main.rs b/minigrep/src/main.rs index fe5d707..8e6d553 100644 --- a/minigrep/src/main.rs +++ b/minigrep/src/main.rs @@ -1,6 +1,6 @@ use std::env; +use std::error::Error; use std::fs; -use std::os::unix::process; struct Config { query: String, file_path: String, @@ -15,6 +15,12 @@ impl Config { Ok(Config { query, file_path }) } } +fn run(config: Config) -> Result<(), Box> { + let contents = fs::read_to_string(config.file_path)?; + println!("With text:\n {contents}"); + + Ok(()) +} fn main() { let args: Vec = env::args().collect(); let config = Config::build(&args).unwrap_or_else(|err| { @@ -25,8 +31,8 @@ fn main() { println!("Searching for {}", config.query); println!("In file {}", config.file_path); - let contents = - fs::read_to_string(config.file_path).expect("Should have been able to read the file"); - - println!("With text:\n {contents}"); + if let Err(e) = run(config) { + println!("Application error: {e}"); + std::process::exit(1); + } }