//! ## Adding Arguments //! //! 1. [Positionals](#positionals) //! 2. [Options](#options) //! 3. [Flags](#flags) //! 4. [Subcommands](#subcommands) //! 5. [Defaults](#defaults) //! //! //! ### Positionals //! //! You can have users specify values by their position on the command-line: //! //! ```rust #![doc = include_str!("../../examples/tutorial_builder/03_03_positional.rs")] //! ``` #![doc = include_str!("../../examples/tutorial_builder/03_03_positional.md")] //! //! Note that the default [`ArgAction`][crate::ArgAction] is [`Set`][crate::ArgAction::Set]. To //! accept multiple values, override the [action][Arg::action] with [`Append`][crate::ArgAction::Append]: //! ```rust #![doc = include_str!("../../examples/tutorial_builder/03_03_positional_mult.rs")] //! ``` #![doc = include_str!("../../examples/tutorial_builder/03_03_positional_mult.md")] //! //! ### Options //! //! You can name your arguments with a flag: //! - Order doesn't matter //! - They can be optional //! - Intent is clearer //! //! ```rust #![doc = include_str!("../../examples/tutorial_builder/03_02_option.rs")] //! ``` #![doc = include_str!("../../examples/tutorial_builder/03_02_option.md")] //! //! Note that the default [`ArgAction`][crate::ArgAction] is [`Set`][crate::ArgAction::Set]. To //! accept multiple occurrences, override the [action][Arg::action] with [`Append`][crate::ArgAction::Append]: //! ```rust #![doc = include_str!("../../examples/tutorial_builder/03_02_option_mult.rs")] //! ``` #![doc = include_str!("../../examples/tutorial_builder/03_02_option_mult.md")] //! //! ### Flags //! //! Flags can also be switches that can be on/off: //! //! ```rust #![doc = include_str!("../../examples/tutorial_builder/03_01_flag_bool.rs")] //! ``` #![doc = include_str!("../../examples/tutorial_builder/03_01_flag_bool.md")] //! //! To accept multiple flags, use [`Count`][crate::ArgAction::Count]: //! //! ```rust #![doc = include_str!("../../examples/tutorial_builder/03_01_flag_count.rs")] //! ``` #![doc = include_str!("../../examples/tutorial_builder/03_01_flag_count.md")] //! //! ### Subcommands //! //! Subcommands are defined as [`Command`][crate::Command]s that get added via //! [`Command::subcommand`][crate::Command::subcommand]. Each instance of a Subcommand can have its //! own version, author(s), Args, and even its own subcommands. //! //! ```rust #![doc = include_str!("../../examples/tutorial_builder/03_04_subcommands.rs")] //! ``` #![doc = include_str!("../../examples/tutorial_builder/03_04_subcommands.md")] //! //! ### Defaults //! //! We've previously showed that arguments can be [`required`][crate::Arg::required] or optional. //! When optional, you work with a `Option` and can `unwrap_or`. Alternatively, you can set //! [`Arg::default_value`][crate::Arg::default_value]. //! //! ```rust #![doc = include_str!("../../examples/tutorial_builder/03_05_default_values.rs")] //! ``` #![doc = include_str!("../../examples/tutorial_builder/03_05_default_values.md")] #![allow(unused_imports)] use crate::builder::*; pub use super::chapter_1 as previous; pub use super::chapter_3 as next; pub use crate::_tutorial as table_of_contents;