use std::fmt::{
self,
Display,
Formatter,
Write as _,
};
use super::{
LogOutputLimit,
LogSafeText,
internal::BoundedLogEscapeWriter,
};
#[must_use = "format the bounded log-safe text"]
pub struct BoundedLogSafeDisplay<'a> {
value: &'a LogSafeText<'a>,
limit: LogOutputLimit,
}
impl<'a> BoundedLogSafeDisplay<'a> {
#[inline(always)]
pub(super) const fn new(
value: &'a LogSafeText<'a>,
limit: LogOutputLimit,
) -> Self {
Self { value, limit }
}
}
impl Display for BoundedLogSafeDisplay<'_> {
fn fmt(&self, formatter: &mut Formatter<'_>) -> fmt::Result {
let mut writer = BoundedLogEscapeWriter::new(self.limit);
let _ = writer.write_str(self.value.as_str());
formatter.write_str(&writer.finish())
}
}