當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。