clap-serde 0.3.0

Provides a wrapper to deserialize clap app using serde.
Documentation
use clap::ValueHint;
use serde::{de::DeserializeSeed, Deserialize};

enum_de!(ValueHint,ValueHint1,
    #[derive(Deserialize, Clone, Copy)]
    #[cfg_attr(feature = "kebab-case-key" ,serde(rename_all = "kebab-case"))]
    #[cfg_attr(feature = "snake-case-key" ,serde(rename_all = "snake_case"))]
    {
    Unknown,
    Other,
    AnyPath,
    FilePath,
    DirPath,
    ExecutablePath,
    CommandName,
    CommandString,
    CommandWithArguments,
    Username,
    Hostname,
    Url,
    EmailAddress,
});

pub struct ValueHintSeed;

impl<'de> DeserializeSeed<'de> for ValueHintSeed {
    type Value = ValueHint;

    fn deserialize<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
    where
        D: serde::Deserializer<'de>,
    {
        ValueHint1::deserialize(deserializer).map(|v| v.into())
    }
}