clap_builder::builder

Trait ValueParserFactory

source
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§

source

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§

source

fn value_parser() -> Self::Parser

Create the specified Self::Parser

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl ValueParserFactory for bool

source§

impl ValueParserFactory for i8

source§

impl ValueParserFactory for i16

source§

impl ValueParserFactory for i32

source§

impl ValueParserFactory for i64

source§

impl ValueParserFactory for u8

source§

impl ValueParserFactory for u16

source§

impl ValueParserFactory for u32

source§

impl ValueParserFactory for u64

source§

impl ValueParserFactory for Box<str>

source§

impl ValueParserFactory for Box<OsStr>

source§

impl ValueParserFactory for Box<Path>

source§

impl ValueParserFactory for String

source§

impl ValueParserFactory for OsString

source§

impl ValueParserFactory for PathBuf

source§

impl<T> ValueParserFactory for Box<T>

source§

impl<T> ValueParserFactory for Arc<T>

source§

impl<T> ValueParserFactory for Wrapping<T>

Implementors§