use super::*;
use regex::Regex;
use serde::{Deserializer, Serializer};
pub(super) fn serialize<S: Serializer>(
value: &Option<Box<Regex>>,
serializer: S,
) -> Result<S::Ok, S::Error> {
match value {
None => {
serializer.serialize_none() }
Some(regex) => serializer.serialize_str(regex.as_str()),
}
}
pub(super) fn deserialize<'de, D>(deserializer: D) -> Result<Option<Box<Regex>>, D::Error>
where
D: Deserializer<'de>,
{
use serde::de::Error;
let regex: String = String::deserialize(deserializer)?;
let regex = Regex::new(®ex).map_err(|e| D::Error::custom(e.to_string()))?;
Ok(Some(Box::new(regex)))
}