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§
sourcetype Parser
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§
sourcefn value_parser() -> Self::Parser
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.