# migparser This crates implements a very simple argument parser inspired by the Python one. It allows adding arguments of different types (int, uint, bool, string, float) and customize the behaviour with different options (necessary, store-true, store-false, ...). ## Example ```rust use migparser::{ArgumentOption, ArgumentParser, DataType, ListType}; fn main() -> Result<(), String> { let mut parser = ArgumentParser::new(); /* The type of argument (flag, positional, ...) is identified by the name of the argument and data type. */ parser.add_argument("positionalarg", None, DataType::String, None, None)?; parser.add_argument( "--necessaryarg", Some(vec!["-na".to_owned()]), DataType::Int, Some(vec![ArgumentOption::Necessary]), None, )?; parser.add_argument( "--optionalarg", Some(vec!["-oa".to_owned()]), DataType::Float, None, None, )?; parser.add_argument( "--flagarg", Some(vec!["-f".to_owned()]), DataType::Bool, Some(vec![ArgumentOption::StoreTrue]), /* StoreTrue or StoreFalse for flag */ None, )?; parser.add_argument( "--listarg", Some(vec!["-la".to_owned()]), DataType::List(ListType::Int), Some(vec![ArgumentOption::NArgs(4)]), /* StoreTrue or StoreFalse for flag */ None, )?; parser.print_data(); parser.parse_arguments(); parser.print_data(); parser2.parse_arguments_from_text("miguel -na 1 -f 1 -oa 2.3 -la 12 34 78 23".to_owned()); parser2.print_data(); } ``` Run it ```bash cargo run miguel -na 1 -f 1 -oa 2.3 ```