当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust Write用法及代码示例


本文简要介绍rust语言中 Trait std::io::Write 的用法。

用法

pub trait Write {
    fn write(&mut self, buf: &[u8]) -> Result<usize>;
    fn flush(&mut self) -> Result<()>;

    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 特征的实现者有时称为'writers'。

编写器由两种必需的方法定义, write flush

  • write 方法将尝试将一些数据写入对象,返回成功写入的字节数。

  • flush 方法对于适配器和显式缓冲区本身很有用,可确保所有缓冲数据都已推送到 'true sink'。

作家旨在彼此可组合。 std::io 中的许多实现者采用并提供实现 Write 特征的类型。

例子

use std::io::prelude::*;
use std::fs::File;

fn main() -> std::io::Result<()> {
    let data = b"some bytes";

    let mut pos = 0;
    let mut buffer = File::create("foo.txt")?;

    while pos < data.len() {
        let bytes_written = buffer.write(&data[pos..])?;
        pos += bytes_written;
    }
    Ok(())
}

该特征还提供了方便的方法,例如 write_all ,它在循环中调用 write 直到其整个输入被写入。

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Trait std::io::Write。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。