use regex::Regex;
use crate::PagableDeserialize;
use crate::PagableDeserializer;
use crate::PagableSerialize;
use crate::PagableSerializer;
impl PagableSerialize for Regex {
fn pagable_serialize(&self, serializer: &mut dyn PagableSerializer) -> crate::Result<()> {
self.as_str().pagable_serialize(serializer)
}
}
impl<'de> PagableDeserialize<'de> for Regex {
fn pagable_deserialize<D: PagableDeserializer<'de> + ?Sized>(
deserializer: &mut D,
) -> crate::Result<Self> {
let pattern = String::pagable_deserialize(deserializer)?;
Regex::new(&pattern).map_err(|e| crate::Error::msg(format!("invalid regex: {e}")))
}
}
impl PagableSerialize for fancy_regex::Regex {
fn pagable_serialize(&self, serializer: &mut dyn PagableSerializer) -> crate::Result<()> {
self.as_str().pagable_serialize(serializer)
}
}
impl<'de> PagableDeserialize<'de> for fancy_regex::Regex {
fn pagable_deserialize<D: PagableDeserializer<'de> + ?Sized>(
deserializer: &mut D,
) -> crate::Result<Self> {
let pattern = String::pagable_deserialize(deserializer)?;
fancy_regex::Regex::new(&pattern)
.map_err(|e| crate::Error::msg(format!("invalid fancy regex: {e}")))
}
}