diff options
author | Adam Carpenter <53hornet@gmail.com> | 2019-02-25 16:47:02 -0500 |
---|---|---|
committer | Adam Carpenter <53hornet@gmail.com> | 2019-02-25 16:47:02 -0500 |
commit | a0070916ef13387461a11bb26d5c798b07121165 (patch) | |
tree | a7b9d132ed90b30a9ac5c2d9773edfc487a6c31e /minigrep/src | |
parent | 7d5500f62c1eb316682d6c8de314d2b181c5248a (diff) | |
download | learning-rust-a0070916ef13387461a11bb26d5c798b07121165.tar.xz learning-rust-a0070916ef13387461a11bb26d5c798b07121165.zip |
Updated to include Config struct.
Diffstat (limited to 'minigrep/src')
-rw-r--r-- | minigrep/src/main.rs | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/minigrep/src/main.rs b/minigrep/src/main.rs index e7a11a9..1e04b5e 100644 --- a/minigrep/src/main.rs +++ b/minigrep/src/main.rs @@ -1,3 +1,40 @@ +use std::process; +use std::env; +use std::fs; + fn main() { - println!("Hello, world!"); + let args: Vec<String> = env::args().collect(); + let config = Config::new(&args).unwrap_or_else(|err| { + println!("Problem parsing arguments: {}", err); + process::exit(1); + }); + + println!("Searching for {}", config.query); + println!("In file {}", config.filename); + + let contents = fs::read_to_string(config.filename) + .expect("something went wrong."); + + dbg!(contents); +} + +struct Config { + query: String, + filename: String, +} + +impl Config { + + + fn new(args: &[String]) -> Result<Config, &'static str> { + + if args.len() < 3 { + panic!("not enough args"); + } + + let query = args[1].clone(); + let filename = args[2].clone(); + Ok(Config { query, filename }) + } + } |