use serde_json::Value;
use crate::error::VldError;
use crate::schema::VldSchema;
pub struct ZMessage<T: VldSchema> {
inner: T,
msg: String,
}
impl<T: VldSchema> ZMessage<T> {
pub fn new(inner: T, msg: impl Into<String>) -> Self {
Self {
inner,
msg: msg.into(),
}
}
}
impl<T: VldSchema> VldSchema for ZMessage<T> {
type Output = T::Output;
fn parse_value(&self, value: &Value) -> Result<T::Output, VldError> {
self.inner.parse_value(value).map_err(|mut err| {
for issue in &mut err.issues {
issue.message = self.msg.clone();
}
err
})
}
}