pub trait ValueParserFactory {
    type Parser;

    // Required method
    fn value_parser() -> Self::Parser;
}
Expand description

Register a type with value_parser!

Example

#[derive(Copy, Clone, Debug)]
pub struct Custom(u32);

impl clap::builder::ValueParserFactory for Custom {
    type Parser = CustomValueParser;
    fn value_parser() -> Self::Parser {
        CustomValueParser
    }
}

#[derive(Clone, Debug)]
pub struct CustomValueParser;
impl clap::builder::TypedValueParser for CustomValueParser {
    type Value = Custom;

    fn parse_ref(
        &self,
        cmd: &clap::Command,
        arg: Option<&clap::Arg>,
        value: &std::ffi::OsStr,
    ) -> Result<Self::Value, clap::Error> {
        let inner = clap::value_parser!(u32);
        let val = inner.parse_ref(cmd, arg, value)?;
        Ok(Custom(val))
    }
}

let parser: CustomValueParser = clap::value_parser!(Custom);

Required Associated Types§

type Parser

Generated parser, usually ValueParser.

It should at least be a type that supports Into<ValueParser>. A non-ValueParser type allows the caller to do further initialization on the parser.

Required Methods§

fn value_parser() -> Self::Parser

Create the specified Self::Parser

Implementations on Foreign Types§

§

impl ValueParserFactory for i16

§

impl ValueParserFactory for bool

§

impl ValueParserFactory for Box<OsStr, Global>

§

impl<T> ValueParserFactory for Wrapping<T>where T: ValueParserFactory + Send + Sync + Clone, <T as ValueParserFactory>::Parser: TypedValueParser<Value = T>,

§

impl<T> ValueParserFactory for Box<T, Global>where T: ValueParserFactory + Send + Sync + Clone, <T as ValueParserFactory>::Parser: TypedValueParser<Value = T>,

§

impl ValueParserFactory for u8

§

impl ValueParserFactory for Box<str, Global>

§

impl ValueParserFactory for OsString

§

impl ValueParserFactory for u16

§

impl ValueParserFactory for i32

§

impl ValueParserFactory for i64

§

impl<T> ValueParserFactory for Arc<T, Global>where T: ValueParserFactory + Send + Sync + Clone, <T as ValueParserFactory>::Parser: TypedValueParser<Value = T>,

§

impl ValueParserFactory for i8

§

impl ValueParserFactory for u32

§

impl ValueParserFactory for PathBuf

§

impl ValueParserFactory for u64

§

impl ValueParserFactory for Box<Path, Global>

§

impl ValueParserFactory for String

Implementors§