wheel-rs 1.9.3

A Rust utility library providing file operations, time utilities and Duration serialization support.
Documentation
use hickory_resolver::config::ResolveHosts;
use serde::de::Unexpected;
use serde::{Deserialize, Deserializer};

pub fn serialize<S>(resolve_hosts: &ResolveHosts, serializer: S) -> Result<S::Ok, S::Error>
where
    S: serde::Serializer,
{
    let s = match resolve_hosts {
        ResolveHosts::Auto => "Auto",
        ResolveHosts::Always => "Always",
        ResolveHosts::Never => "Never",
    };
    serializer.serialize_str(s)
}

pub fn deserialize<'de, D>(deserializer: D) -> Result<ResolveHosts, D::Error>
where
    D: Deserializer<'de>,
{
    {
        let s = String::deserialize(deserializer)?;
        Ok(match s.to_lowercase().as_str() {
            "auto" => ResolveHosts::Auto,
            "always" => ResolveHosts::Always,
            "never" => ResolveHosts::Never,
            _ => Err(serde::de::Error::invalid_value(
                Unexpected::Str(&s),
                &"auto, always, never",
            ))?,
        })
    }
}