@@ -1,4 +1,4 @@
|
|||||||
use std::io::{Result, Write};
|
use std::io::{IoSlice, Result, Write};
|
||||||
|
|
||||||
/// An adapter around a `Write` stream that guarantees that its output
|
/// An adapter around a `Write` stream that guarantees that its output
|
||||||
/// is valid UTF-8 and contains no control characters. It does this by
|
/// is valid UTF-8 and contains no control characters. It does this by
|
||||||
@@ -124,6 +124,27 @@ where
|
|||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn write_vectored(&mut self, bufs: &[IoSlice]) -> Result<usize> {
|
||||||
|
// Terminal output is [not expected to be atomic], so just write all the
|
||||||
|
// individual buffers in sequence.
|
||||||
|
//
|
||||||
|
// [not expected to be atomic]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html#tag_16_474_08
|
||||||
|
let mut total_written = 0;
|
||||||
|
|
||||||
|
for buf in bufs {
|
||||||
|
let written = self.write(buf)?;
|
||||||
|
|
||||||
|
total_written += written;
|
||||||
|
|
||||||
|
// Stop at the first point where the OS writes less than we asked.
|
||||||
|
if written < buf.len() {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(total_written)
|
||||||
|
}
|
||||||
|
|
||||||
fn flush(&mut self) -> Result<()> {
|
fn flush(&mut self) -> Result<()> {
|
||||||
self.inner.flush()
|
self.inner.flush()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user