use std::{
borrow::Cow,
fmt::{
self,
Display,
Formatter,
},
};
use crate::LogSafeText;
#[must_use = "render the redacted pair instead of the original environment value"]
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RedactedEnvPair {
rendered: LogSafeText<'static>,
}
impl RedactedEnvPair {
#[inline(always)]
pub(super) fn new(
name: LogSafeText<'static>,
value: LogSafeText<'static>,
) -> Self {
Self::from_rendered(format!("{}={}", name.as_str(), value.as_str()))
}
#[inline(always)]
pub(super) fn from_rendered(rendered: String) -> Self {
Self {
rendered: LogSafeText::from_escaped(Cow::Owned(rendered)),
}
}
}
impl Display for RedactedEnvPair {
#[inline]
fn fmt(&self, formatter: &mut Formatter<'_>) -> fmt::Result {
Display::fmt(&self.rendered, formatter)
}
}