torbox-core-rs 0.1.0

Rust SDK Core for the torbox API
Documentation
use serde::{Deserialize, Deserializer};

#[derive(Debug)]
pub enum OneOrMany<T> {
    One(T),
    Many(Vec<T>),
}

impl<'de, T: Deserialize<'de>> Deserialize<'de> for OneOrMany<T> {
    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
        #[derive(Deserialize)]
        #[serde(untagged)]
        enum Inner<T> {
            Many(Vec<T>),
            One(T),
        }

        Inner::deserialize(deserializer).map(|inner| match inner {
            Inner::Many(v) => OneOrMany::Many(v),
            Inner::One(v) => OneOrMany::One(v),
        })
    }
}