1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
//! Parser for command-line arguments. //! //! ## Example //! //! ``` //! use arguments::Arguments; //! //! let args = std::env::args(); // foo --bar --buz qux //! # let args = vec!["foo", "--bar", "--buz", "quz"]; //! # let args = args.iter().map(|a| a.to_string()); //! let Arguments { command, options, .. } = arguments::parse(args).unwrap(); //! //! println!("Foo: {}", command); //! println!("Bar: {}", options.get::<bool>("bar").unwrap()); //! println!("Buz: {}", options.get::<String>("buz").unwrap()); //! ``` extern crate options; macro_rules! raise( ($($arg:tt)*) => (return Err(format!($($arg)*))); ); /// Command-line arguments. pub struct Arguments { /// The name of the executable. pub command: String, /// The options given. pub options: Options, /// Unclassified arguments. pub orphans: Vec<String>, } /// Command-line options. pub use options::Options; mod parser; pub use parser::Parser; /// Parse command-line arguments. #[inline] pub fn parse<I: Iterator<Item=String>>(stream: I) -> Result<Arguments, String> { Parser::new().parse(stream) }