use super::redact_json_serialize::RedactJsonSerialize;
use super::redact_serialize_scope::RedactSerializeScope;
#[doc(hidden)]
#[cfg(feature = "json")]
pub struct RedactedJsonSerializeRef<'value, 'policy, T: ?Sized> {
value: &'value T,
policy: &'policy crate::RedactionPolicy,
}
#[cfg(feature = "json")]
impl<'value, 'policy, T: ?Sized> RedactedJsonSerializeRef<'value, 'policy, T> {
#[must_use]
pub fn new(value: &'value T, policy: &'policy crate::RedactionPolicy) -> Self {
Self { value, policy }
}
}
#[cfg(feature = "json")]
impl<T: ?Sized + RedactJsonSerialize> serde::Serialize for RedactedJsonSerializeRef<'_, '_, T> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
let _scope = RedactSerializeScope::new(self.policy);
self.value.serialize_redacted_json(serializer, self.policy)
}
}