logo
pub trait ValueParserFactory {
    type Parser;
    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);

Associated Types

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

Create the specified Self::Parser

Implementations on Foreign Types

Implementors