use super::redact_map_serialize::RedactMapSerialize;
use super::redact_serialize_scope::RedactSerializeScope;
#[doc(hidden)]
pub struct RedactedMapSerializeRef<'value, 'policy, T: ?Sized> {
value: &'value T,
policy: &'policy crate::RedactionPolicy,
}
impl<'value, 'policy, T: ?Sized> RedactedMapSerializeRef<'value, 'policy, T> {
#[must_use]
pub fn new(value: &'value T, policy: &'policy crate::RedactionPolicy) -> Self {
Self { value, policy }
}
}
impl<T: ?Sized + RedactMapSerialize> serde::Serialize for RedactedMapSerializeRef<'_, '_, 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_map(serializer, self.policy)
}
}