#[allow(unused_imports)]
use crate::alloc_prelude::*;
#[cfg(feature = "serde")]
use serde::{Deserialize, Deserializer};
#[cfg(feature = "serde")]
pub fn cow_from_string<'de, D>(deserializer: D) -> Result<Cow<'static, str>, D::Error>
where
D: Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(Cow::Owned(s))
}
#[cfg(feature = "serde")]
pub fn cow_option_from_string<'de, D>(
deserializer: D,
) -> Result<Option<Cow<'static, str>>, D::Error>
where
D: Deserializer<'de>,
{
let opt = Option::<String>::deserialize(deserializer)?;
Ok(opt.map(Cow::Owned))
}
#[cfg(feature = "serde")]
pub fn cow_vec_from_strings<'de, D>(deserializer: D) -> Result<Vec<Cow<'static, str>>, D::Error>
where
D: Deserializer<'de>,
{
let vec: Vec<String> = Vec::deserialize(deserializer)?;
Ok(vec.into_iter().map(Cow::Owned).collect())
}
#[cfg(feature = "serde")]
pub fn cow_option_vec_from_strings<'de, D>(
deserializer: D,
) -> Result<Option<Vec<Cow<'static, str>>>, D::Error>
where
D: Deserializer<'de>,
{
let opt: Option<Vec<String>> = Option::deserialize(deserializer)?;
Ok(opt.map(|vec| vec.into_iter().map(Cow::Owned).collect()))
}