use std::io;
use crate::resource::ResourceQuantity;
use crate::string::BudgetedStringWriter;
pub(crate) struct IoWriter<'writer, 'budget, R, Q>
where
Q: ResourceQuantity,
{
pub(crate) writer: &'writer mut BudgetedStringWriter<'budget, R, Q>,
}
impl<R, Q> io::Write for IoWriter<'_, '_, R, Q>
where
R: Clone,
Q: ResourceQuantity,
{
fn write(&mut self, bytes: &[u8]) -> io::Result<usize> {
if self.writer.append(bytes) {
Ok(bytes.len())
} else {
Err(io::Error::other("budgeted string writer rejected output"))
}
}
fn flush(&mut self) -> io::Result<()> {
Ok(())
}
}