use std::{fmt, io};
pub struct WriterWrapper<WriteT> {
pub inner: WriteT,
}
impl<WriteT> WriterWrapper<WriteT> {
pub fn new(inner: WriteT) -> Self {
Self { inner }
}
}
impl<WriteT> fmt::Write for WriterWrapper<WriteT>
where
WriteT: io::Write,
{
fn write_str(&mut self, string: &str) -> fmt::Result {
self.inner.write_all(string.as_bytes()).map_err(|_| fmt::Error)
}
}
pub trait AsFmtWrite
where
Self: Sized,
{
fn as_fmt_write(self) -> WriterWrapper<Self>;
}
impl<WriteT> AsFmtWrite for WriteT
where
WriteT: io::Write,
{
fn as_fmt_write(self) -> WriterWrapper<Self> {
WriterWrapper::new(self)
}
}