Write
一个类型实现了 Write
trait 时, 就表示它实现了二进制字节流输出.
Write
trait 的定义如下:
pub trait Write {
// Required methods
fn write(&mut self, buf: &[u8]) -> Result<usize>;
fn flush(&mut self) -> Result<()>;
// Provided methods
fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize> { ... }
fn is_write_vectored(&self) -> bool { ... }
fn write_all(&mut self, buf: &[u8]) -> Result<()> { ... }
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()> { ... }
fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<()> { ... }
fn by_ref(&mut self) -> &mut Self
where Self: Sized { ... }
}
通常只需要实现以下两个方法:
write()
写入一块数据flush()
将缓存回写到存储设备
标准库为多个对象实现了 Write
trait:
File
, 文件对象TcpStream
, TCP socket 对象UnixStream
, unix domain socket 对象StdOut
与Stderr
, 标准输出与错误输出Vec<u8>
与VecDeque<u8>
, 用作二进制数据缓存