Macro cargo::util::command_prelude::value_parser
macro_rules! value_parser { ($name:ty) => { ... }; }
Expand description
Select a [ValueParser
] implementation from the intended type
Supported types
- [
ValueParserFactory
types][ValueParserFactory], including- [Native types][ValueParser]:
bool
,String
,OsString
,PathBuf
- [Ranged numeric types][RangedI64ValueParser]:
u8
,i8
,u16
,i16
,u32
,i32
,u64
,i64
- [Native types][ValueParser]:
- [
ValueEnum
types][crate::ValueEnum] From<OsString>
types andFrom<&OsStr>
typesFrom<String>
types andFrom<&str>
typesFromStr
types, including usize, isize
Example
Usage:
let mut cmd = clap::Command::new("raw")
.arg(
clap::Arg::new("output")
.value_parser(clap::value_parser!(PathBuf))
.required(true)
);
let m = cmd.try_get_matches_from_mut(["cmd", "file.txt"]).unwrap();
let port: &PathBuf = m.get_one("output")
.expect("required");
assert_eq!(port, Path::new("file.txt"));
Example mappings:
// Built-in types
let parser = clap::value_parser!(String);
assert_eq!(format!("{parser:?}"), "ValueParser::string");
let parser = clap::value_parser!(std::ffi::OsString);
assert_eq!(format!("{parser:?}"), "ValueParser::os_string");
let parser = clap::value_parser!(std::path::PathBuf);
assert_eq!(format!("{parser:?}"), "ValueParser::path_buf");
clap::value_parser!(u16).range(3000..);
clap::value_parser!(u64).range(3000..);
// FromStr types
let parser = clap::value_parser!(usize);
assert_eq!(format!("{parser:?}"), "_AnonymousValueParser(ValueParser::other(usize))");
// ValueEnum types
clap::value_parser!(ColorChoice);