use std::fmt;
pub(super) struct BoundedDisplayWriter {
output: String,
remaining: usize,
}
impl BoundedDisplayWriter {
#[must_use]
pub(super) fn new(remaining: usize) -> Self {
Self {
output: String::new(),
remaining,
}
}
#[must_use]
pub(super) fn finish(self) -> String {
self.output
}
}
impl fmt::Write for BoundedDisplayWriter {
fn write_str(&mut self, value: &str) -> fmt::Result {
if value.len() > self.remaining {
return Err(fmt::Error);
}
self.output.push_str(value);
self.remaining -= value.len();
Ok(())
}
}