use std::str::FromStr;
#[derive(Debug, Default, PartialEq, Eq, Hash, Copy, Clone)]
#[non_exhaustive]
pub enum ValueHint {
#[default]
Unknown,
Other,
AnyPath,
FilePath,
DirPath,
ExecutablePath,
CommandName,
CommandString,
CommandWithArguments,
Username,
Hostname,
Url,
EmailAddress,
}
#[cfg(feature = "unstable-ext")]
impl crate::builder::ArgExt for ValueHint {}
impl FromStr for ValueHint {
type Err = String;
fn from_str(s: &str) -> Result<Self, <Self as FromStr>::Err> {
Ok(match &*s.to_ascii_lowercase() {
"unknown" => Self::Unknown,
"other" => Self::Other,
"anypath" => Self::AnyPath,
"filepath" => Self::FilePath,
"dirpath" => Self::DirPath,
"executablepath" => Self::ExecutablePath,
"commandname" => Self::CommandName,
"commandstring" => Self::CommandString,
"commandwitharguments" => Self::CommandWithArguments,
"username" => Self::Username,
"hostname" => Self::Hostname,
"url" => Self::Url,
"emailaddress" => Self::EmailAddress,
_ => return Err(format!("unknown ValueHint: `{s}`")),
})
}
}