use std::env; pub struct Args { pub directory: String, pub n_sentences: u32, pub unique: bool, } impl Args { pub fn parse() -> Option { let arg_vec: Vec = env::args().collect(); let mut i = 1; //skip first arg (execution path) let mut n_sentences = 1; let mut unique = false; let mut opt_directory: Option = None; while i < arg_vec.len() { match arg_vec[i].as_str() { "-n" | "--sentences" => { if i + 1 < arg_vec.len() { n_sentences = arg_vec[i+1].parse::().ok()?; } else { return None; } i += 2; }, "--unique" => { unique = true; i += 1; }, other => { opt_directory = match opt_directory { Some(_) => { return None; }, None => Some(other.to_string()), }; i += 1; }, } } let directory = opt_directory?; Some(Args { directory, n_sentences, unique, }) } }