trz-gateway-server 0.2.7

Secure Proxy / Agents implementation in Rust
Documentation
use serde::Deserialize;
use serde::Deserializer;
use serde::Serializer;

pub fn serialize<S>(domains: &[String], serializer: S) -> Result<S::Ok, S::Error>
where
    S: Serializer,
{
    serializer.collect_seq(domains)
}

pub fn deserialize<'de, D: Deserializer<'de>>(deserializer: D) -> Result<Vec<String>, D::Error> {
    #[derive(Deserialize)]
    #[serde(untagged)]
    enum Domains {
        Single(String),
        Multiple(Vec<String>),
    }

    Ok(match Domains::deserialize(deserializer)? {
        Domains::Single(domain) => vec![domain],
        Domains::Multiple(domains) => domains,
    })
}