#[non_exhaustive]pub enum ArgAction {
Set,
Append,
StoreValue,
IncOccurrence,
SetTrue,
SetFalse,
Count,
Help,
Version,
}
Expand description
Behavior of arguments when they are encountered while parsing
§Examples
let cmd = Command::new("mycmd")
.arg(
Arg::new("special-help")
.short('?')
.action(clap::ArgAction::Help)
);
// Existing help still exists
let err = cmd.clone().try_get_matches_from(["mycmd", "-h"]).unwrap_err();
assert_eq!(err.kind(), clap::error::ErrorKind::DisplayHelp);
// New help available
let err = cmd.try_get_matches_from(["mycmd", "-?"]).unwrap_err();
assert_eq!(err.kind(), clap::error::ErrorKind::DisplayHelp);
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Set
When encountered, store the associated value(s) in ArgMatches
§Examples
let cmd = Command::new("mycmd")
.arg(
Arg::new("flag")
.long("flag")
.action(clap::ArgAction::Set)
);
let matches = cmd.try_get_matches_from(["mycmd", "--flag", "value"]).unwrap();
assert!(matches.contains_id("flag"));
assert_eq!(matches.occurrences_of("flag"), 0);
assert_eq!(
matches.get_many::<String>("flag").unwrap_or_default().map(|v| v.as_str()).collect::<Vec<_>>(),
vec!["value"]
);
Append
When encountered, store the associated value(s) in ArgMatches
§Examples
let cmd = Command::new("mycmd")
.arg(
Arg::new("flag")
.long("flag")
.action(clap::ArgAction::Append)
);
let matches = cmd.try_get_matches_from(["mycmd", "--flag", "value1", "--flag", "value2"]).unwrap();
assert!(matches.contains_id("flag"));
assert_eq!(matches.occurrences_of("flag"), 0);
assert_eq!(
matches.get_many::<String>("flag").unwrap_or_default().map(|v| v.as_str()).collect::<Vec<_>>(),
vec!["value1", "value2"]
);
StoreValue
Deprecated, replaced with ArgAction::Set
or ArgAction::Append
Builder: Instead of arg.action(ArgAction::StoreValue)
,
- Use
arg.action(ArgAction::Set)
for single-occurrence arguments - Use
arg.action(ArgAction::Append)
for multiple-occurrence arguments
Derive: opt-in to the new behavior with #[clap(action)]
IncOccurrence
Deprecated, replaced with ArgAction::SetTrue
or ArgAction::Count
SetTrue
When encountered, act as if "true"
was encountered on the command-line
If no default_value
is set, it will be false
.
No value is allowed. To optionally accept a value, see
Arg::default_missing_value
§Examples
let cmd = Command::new("mycmd")
.arg(
Arg::new("flag")
.long("flag")
.action(clap::ArgAction::SetTrue)
);
let matches = cmd.clone().try_get_matches_from(["mycmd", "--flag", "--flag"]).unwrap();
assert!(matches.contains_id("flag"));
assert_eq!(matches.occurrences_of("flag"), 0);
assert_eq!(
matches.get_one::<bool>("flag").copied(),
Some(true)
);
let matches = cmd.try_get_matches_from(["mycmd"]).unwrap();
assert!(matches.contains_id("flag"));
assert_eq!(matches.occurrences_of("flag"), 0);
assert_eq!(
matches.get_one::<bool>("flag").copied(),
Some(false)
);
SetFalse
When encountered, act as if "false"
was encountered on the command-line
If no default_value
is set, it will be true
.
No value is allowed. To optionally accept a value, see
Arg::default_missing_value
§Examples
let cmd = Command::new("mycmd")
.arg(
Arg::new("flag")
.long("flag")
.action(clap::ArgAction::SetFalse)
);
let matches = cmd.clone().try_get_matches_from(["mycmd", "--flag", "--flag"]).unwrap();
assert!(matches.contains_id("flag"));
assert_eq!(matches.occurrences_of("flag"), 0);
assert_eq!(
matches.get_one::<bool>("flag").copied(),
Some(false)
);
let matches = cmd.try_get_matches_from(["mycmd"]).unwrap();
assert!(matches.contains_id("flag"));
assert_eq!(matches.occurrences_of("flag"), 0);
assert_eq!(
matches.get_one::<bool>("flag").copied(),
Some(true)
);
Count
When encountered, increment a u8
counter
If no default_value
is set, it will be 0
.
No value is allowed. To optionally accept a value, see
Arg::default_missing_value
§Examples
let cmd = Command::new("mycmd")
.arg(
Arg::new("flag")
.long("flag")
.action(clap::ArgAction::Count)
);
let matches = cmd.clone().try_get_matches_from(["mycmd", "--flag", "--flag"]).unwrap();
assert!(matches.contains_id("flag"));
assert_eq!(matches.occurrences_of("flag"), 0);
assert_eq!(
matches.get_count("flag"),
2
);
let matches = cmd.try_get_matches_from(["mycmd"]).unwrap();
assert!(matches.contains_id("flag"));
assert_eq!(matches.occurrences_of("flag"), 0);
assert_eq!(
matches.get_count("flag"),
0
);
Help
When encountered, display Command::print_help
Depending on the flag, Command::print_long_help
may be shown
§Examples
let cmd = Command::new("mycmd")
.arg(
Arg::new("special-help")
.short('?')
.action(clap::ArgAction::Help)
);
// Existing help still exists
let err = cmd.clone().try_get_matches_from(["mycmd", "-h"]).unwrap_err();
assert_eq!(err.kind(), clap::error::ErrorKind::DisplayHelp);
// New help available
let err = cmd.try_get_matches_from(["mycmd", "-?"]).unwrap_err();
assert_eq!(err.kind(), clap::error::ErrorKind::DisplayHelp);
Version
When encountered, display Command::version
Depending on the flag, Command::long_version
may be shown
§Examples
let cmd = Command::new("mycmd")
.version("1.0.0")
.arg(
Arg::new("special-version")
.long("special-version")
.action(clap::ArgAction::Version)
);
// Existing help still exists
let err = cmd.clone().try_get_matches_from(["mycmd", "--version"]).unwrap_err();
assert_eq!(err.kind(), clap::error::ErrorKind::DisplayVersion);
// New help available
let err = cmd.try_get_matches_from(["mycmd", "--special-version"]).unwrap_err();
assert_eq!(err.kind(), clap::error::ErrorKind::DisplayVersion);
Implementations§
source§impl ArgAction
impl ArgAction
sourcepub fn takes_values(&self) -> bool
pub fn takes_values(&self) -> bool
Returns whether this action accepts values on the command-line
default_values
and env
may still be
processed.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ArgAction
impl RefUnwindSafe for ArgAction
impl Send for ArgAction
impl Sync for ArgAction
impl Unpin for ArgAction
impl UnwindSafe for ArgAction
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)