clap::builder

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", so this trait is not object safe.

Implementations on Foreign Types§

§

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 ValueParserFactory for Box<str>

§

impl ValueParserFactory for Box<OsStr>

§

impl ValueParserFactory for Box<Path>

§

impl ValueParserFactory for String

§

impl ValueParserFactory for OsString

§

impl ValueParserFactory for PathBuf

§

impl<T> ValueParserFactory for Box<T>

§

impl<T> ValueParserFactory for Arc<T>

§

impl<T> ValueParserFactory for Wrapping<T>

Implementors§