Struct clap::builder::ValueParser  
source · [−]pub struct ValueParser(_);Expand description
Parse/validate argument values
Specified with Arg::value_parser.
ValueParser defines how to convert a raw argument value into a validated and typed value for
use within an application.
See
- value_parser!for automatically selecting an implementation for a given type
- ValueParser::newfor additional- TypedValueParserthat can be used
Example
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("color")
            .long("color")
            .value_parser(["always", "auto", "never"])
            .default_value("auto")
    )
    .arg(
        clap::Arg::new("hostname")
            .long("hostname")
            .value_parser(clap::builder::NonEmptyStringValueParser::new())
            .action(clap::ArgAction::Set)
            .required(true)
    )
    .arg(
        clap::Arg::new("port")
            .long("port")
            .value_parser(clap::value_parser!(u16).range(3000..))
            .action(clap::ArgAction::Set)
            .required(true)
    );
let m = cmd.try_get_matches_from_mut(
    ["cmd", "--hostname", "rust-lang.org", "--port", "3001"]
).unwrap();
let color: &String = m.get_one("color")
    .expect("default");
assert_eq!(color, "auto");
let hostname: &String = m.get_one("hostname")
    .expect("required");
assert_eq!(hostname, "rust-lang.org");
let port: u16 = *m.get_one("port")
    .expect("required");
assert_eq!(port, 3001);Implementations
sourceimpl ValueParser
 
impl ValueParser
sourcepub fn new<P>(other: P) -> Self where
    P: TypedValueParser, 
 
pub fn new<P>(other: P) -> Self where
    P: TypedValueParser, 
Custom parser for argument values
Pre-existing TypedValueParser implementations include:
- Fn(&str) -> Result<T, E>
- EnumValueParserand- PossibleValuesParserfor static enumerated values
- BoolishValueParserand- FalseyValueParserfor alternative- boolimplementations
- RangedI64ValueParserand- RangedU64ValueParser
- NonEmptyStringValueParser
Example
type EnvVar = (String, Option<String>);
fn parse_env_var(env: &str) -> Result<EnvVar, std::io::Error> {
    if let Some((var, value)) = env.split_once('=') {
        Ok((var.to_owned(), Some(value.to_owned())))
    } else {
        Ok((env.to_owned(), None))
    }
}
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("env")
            .value_parser(clap::builder::ValueParser::new(parse_env_var))
            .required(true)
    );
let m = cmd.try_get_matches_from_mut(["cmd", "key=value"]).unwrap();
let port: &EnvVar = m.get_one("env")
    .expect("required");
assert_eq!(*port, ("key".into(), Some("value".into())));sourcepub const fn bool() -> Self
 
pub const fn bool() -> Self
bool parser for argument values
See also:
- BoolishValueParserfor different human readable bool representations
- FalseyValueParserfor assuming non-false is true
Example
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("download")
            .value_parser(clap::value_parser!(bool))
            .required(true)
    );
let m = cmd.try_get_matches_from_mut(["cmd", "true"]).unwrap();
let port: bool = *m.get_one("download")
    .expect("required");
assert_eq!(port, true);
assert!(cmd.try_get_matches_from_mut(["cmd", "forever"]).is_err());sourcepub const fn string() -> Self
 
pub const fn string() -> Self
String parser for argument values
See also:
Example
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("port")
            .value_parser(clap::value_parser!(String))
            .required(true)
    );
let m = cmd.try_get_matches_from_mut(["cmd", "80"]).unwrap();
let port: &String = m.get_one("port")
    .expect("required");
assert_eq!(port, "80");sourcepub const fn os_string() -> Self
 
pub const fn os_string() -> Self
OsString parser for argument values
Example
use std::ffi::OsString;
use std::os::unix::ffi::{OsStrExt,OsStringExt};
let r = Command::new("myprog")
   .arg(
       Arg::new("arg")
       .required(true)
       .value_parser(ValueParser::os_string())
   )
   .try_get_matches_from(vec![
       OsString::from("myprog"),
       OsString::from_vec(vec![0xe9])
   ]);
assert!(r.is_ok());
let m = r.unwrap();
let arg: &OsString = m.get_one("arg")
   .expect("required");
assert_eq!(arg.as_bytes(), &[0xe9]);sourcepub const fn path_buf() -> Self
 
pub const fn path_buf() -> Self
PathBuf parser for argument values
Example
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", "hello.txt"]).unwrap();
let port: &PathBuf = m.get_one("output")
    .expect("required");
assert_eq!(port, Path::new("hello.txt"));
assert!(cmd.try_get_matches_from_mut(["cmd", ""]).is_err());sourceimpl ValueParser
 
impl ValueParser
sourcepub fn possible_values(
    &self
) -> Option<Box<dyn Iterator<Item = PossibleValue> + '_>>
 
pub fn possible_values(
    &self
) -> Option<Box<dyn Iterator<Item = PossibleValue> + '_>>
Reflect on enumerated value properties
Error checking should not be done with this; it is mostly targeted at user-facing applications like errors and completion.
Trait Implementations
sourceimpl Clone for ValueParser
 
impl Clone for ValueParser
sourceimpl Debug for ValueParser
 
impl Debug for ValueParser
sourceimpl<P, const C: usize> From<[P; C]> for ValueParser where
    P: Into<PossibleValue>, 
 
impl<P, const C: usize> From<[P; C]> for ValueParser where
    P: Into<PossibleValue>, 
Create a ValueParser with PossibleValuesParser
See PossibleValuesParser for more flexibility in creating the
PossibleValues.
Examples
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("color")
            .long("color")
            .value_parser(["always", "auto", "never"])
            .default_value("auto")
    );
let m = cmd.try_get_matches_from_mut(
    ["cmd", "--color", "never"]
).unwrap();
let color: &String = m.get_one("color")
    .expect("default");
assert_eq!(color, "never");sourceimpl<P> From<P> for ValueParser where
    P: TypedValueParser + Send + Sync + 'static, 
 
impl<P> From<P> for ValueParser where
    P: TypedValueParser + Send + Sync + 'static, 
Convert a TypedValueParser to ValueParser
Example
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("hostname")
            .long("hostname")
            .value_parser(clap::builder::NonEmptyStringValueParser::new())
            .action(clap::ArgAction::Set)
            .required(true)
    );
let m = cmd.try_get_matches_from_mut(
    ["cmd", "--hostname", "rust-lang.org"]
).unwrap();
let hostname: &String = m.get_one("hostname")
    .expect("required");
assert_eq!(hostname, "rust-lang.org");sourceimpl From<Range<i64>> for ValueParser
 
impl From<Range<i64>> for ValueParser
Create an i64 ValueParser from a N..M range
See RangedI64ValueParser for more control over the output type.
See also RangedU64ValueParser
Examples
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("port")
            .long("port")
            .value_parser(3000..4000)
            .action(clap::ArgAction::Set)
            .required(true)
    );
let m = cmd.try_get_matches_from_mut(["cmd", "--port", "3001"]).unwrap();
let port: i64 = *m.get_one("port")
    .expect("required");
assert_eq!(port, 3001);sourceimpl From<RangeFrom<i64>> for ValueParser
 
impl From<RangeFrom<i64>> for ValueParser
Create an i64 ValueParser from a N.. range
See RangedI64ValueParser for more control over the output type.
See also RangedU64ValueParser
Examples
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("port")
            .long("port")
            .value_parser(3000..)
            .action(clap::ArgAction::Set)
            .required(true)
    );
let m = cmd.try_get_matches_from_mut(["cmd", "--port", "3001"]).unwrap();
let port: i64 = *m.get_one("port")
    .expect("required");
assert_eq!(port, 3001);sourceimpl From<RangeFull> for ValueParser
 
impl From<RangeFull> for ValueParser
Create an i64 ValueParser from a .. range
See RangedI64ValueParser for more control over the output type.
See also RangedU64ValueParser
Examples
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("port")
            .long("port")
            .value_parser(..)
            .action(clap::ArgAction::Set)
            .required(true)
    );
let m = cmd.try_get_matches_from_mut(["cmd", "--port", "3001"]).unwrap();
let port: i64 = *m.get_one("port")
    .expect("required");
assert_eq!(port, 3001);sourceimpl From<RangeInclusive<i64>> for ValueParser
 
impl From<RangeInclusive<i64>> for ValueParser
Create an i64 ValueParser from a N..=M range
See RangedI64ValueParser for more control over the output type.
See also RangedU64ValueParser
Examples
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("port")
            .long("port")
            .value_parser(3000..=4000)
            .action(clap::ArgAction::Set)
            .required(true)
    );
let m = cmd.try_get_matches_from_mut(["cmd", "--port", "3001"]).unwrap();
let port: i64 = *m.get_one("port")
    .expect("required");
assert_eq!(port, 3001);sourcefn from(value: RangeInclusive<i64>) -> Self
 
fn from(value: RangeInclusive<i64>) -> Self
Converts to this type from the input type.
sourceimpl From<RangeTo<i64>> for ValueParser
 
impl From<RangeTo<i64>> for ValueParser
Create an i64 ValueParser from a ..M range
See RangedI64ValueParser for more control over the output type.
See also RangedU64ValueParser
Examples
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("port")
            .long("port")
            .value_parser(..3000)
            .action(clap::ArgAction::Set)
            .required(true)
    );
let m = cmd.try_get_matches_from_mut(["cmd", "--port", "80"]).unwrap();
let port: i64 = *m.get_one("port")
    .expect("required");
assert_eq!(port, 80);sourceimpl From<RangeToInclusive<i64>> for ValueParser
 
impl From<RangeToInclusive<i64>> for ValueParser
Create an i64 ValueParser from a ..=M range
See RangedI64ValueParser for more control over the output type.
See also RangedU64ValueParser
Examples
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("port")
            .long("port")
            .value_parser(..=3000)
            .action(clap::ArgAction::Set)
            .required(true)
    );
let m = cmd.try_get_matches_from_mut(["cmd", "--port", "80"]).unwrap();
let port: i64 = *m.get_one("port")
    .expect("required");
assert_eq!(port, 80);sourcefn from(value: RangeToInclusive<i64>) -> Self
 
fn from(value: RangeToInclusive<i64>) -> Self
Converts to this type from the input type.
sourceimpl<P> From<Vec<P, Global>> for ValueParser where
    P: Into<PossibleValue>, 
 
impl<P> From<Vec<P, Global>> for ValueParser where
    P: Into<PossibleValue>, 
Create a ValueParser with PossibleValuesParser
See PossibleValuesParser for more flexibility in creating the
PossibleValues.
Examples
let possible = vec!["always", "auto", "never"];
let mut cmd = clap::Command::new("raw")
    .arg(
        clap::Arg::new("color")
            .long("color")
            .value_parser(possible)
            .default_value("auto")
    );
let m = cmd.try_get_matches_from_mut(
    ["cmd", "--color", "never"]
).unwrap();
let color: &String = m.get_one("color")
    .expect("default");
assert_eq!(color, "never");sourceimpl<I: Into<ValueParser>> IntoResettable<ValueParser> for I
 
impl<I: Into<ValueParser>> IntoResettable<ValueParser> for I
sourcefn into_resettable(self) -> Resettable<ValueParser>
 
fn into_resettable(self) -> Resettable<ValueParser>
Convert to the intended resettable type
sourceimpl IntoResettable<ValueParser> for Option<ValueParser>
 
impl IntoResettable<ValueParser> for Option<ValueParser>
sourcefn into_resettable(self) -> Resettable<ValueParser>
 
fn into_resettable(self) -> Resettable<ValueParser>
Convert to the intended resettable type
Auto Trait Implementations
impl !RefUnwindSafe for ValueParser
impl Send for ValueParser
impl Sync for ValueParser
impl Unpin for ValueParser
impl !UnwindSafe for ValueParser
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
    T: ?Sized, 
 
impl<T> BorrowMut<T> for T where
    T: ?Sized, 
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
