#![allow(clippy::doc_markdown, clippy::use_self)]
#![cfg_attr(
dylint_lib = "inconsistent_qualification",
allow(inconsistent_qualification)
)]
#![cfg_attr(dylint_lib = "overscoped_allow", allow(overscoped_allow))]
use serde::{de, Serialize};
use serde_untagged::UntaggedEnumVisitor;
#[derive(Clone, Debug, Serialize, Eq, PartialEq, PartialOrd, Ord)]
pub struct StringOrVec(Vec<String>);
impl<'de> de::Deserialize<'de> for StringOrVec {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: de::Deserializer<'de>,
{
UntaggedEnumVisitor::new()
.expecting("string or list of strings")
.string(|value| Ok(StringOrVec(vec![value.to_owned()])))
.seq(|value| value.deserialize().map(StringOrVec))
.deserialize(deserializer)
}
}