Skip to main content

ValueParserFactory

Trait ValueParserFactory 

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

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

§

impl ValueParserFactory for Box<OsStr>

§

impl ValueParserFactory for Box<Path>

§

impl ValueParserFactory for Box<str>

§

impl ValueParserFactory for OsString

§

impl ValueParserFactory for PathBuf

§

impl ValueParserFactory for String

§

impl ValueParserFactory for bool

§

impl ValueParserFactory for i8

§

impl ValueParserFactory for i16

§

impl ValueParserFactory for i32

§

impl ValueParserFactory for i64

§

impl ValueParserFactory for u8

§

impl ValueParserFactory for u16

§

impl ValueParserFactory for u32

§

impl ValueParserFactory for u64

§

impl<T> ValueParserFactory for Arc<T>

§

impl<T> ValueParserFactory for Box<T>

§

impl<T> ValueParserFactory for Saturating<T>

§

impl<T> ValueParserFactory for Wrapping<T>

Implementors§