use std::io::{self, Write};
pub(super) struct RawOut<W: Write>(pub(super) W);
impl<W: Write> Write for RawOut<W> {
fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
let mut remaining = buf;
while let Some(pos) = remaining.iter().position(|&b| b == b'\n') {
self.0.write_all(&remaining[..pos])?;
self.0.write_all(b"\r\n")?;
remaining = &remaining[pos + 1..];
}
self.0.write_all(remaining)?;
Ok(buf.len())
}
fn flush(&mut self) -> io::Result<()> {
self.0.flush()
}
}