#io-stream #buffered #fork #read-write #half #separately #alex

buf_stream

为流提供缓冲的 I/O,其中每个读写半部分都分别缓冲。bufstream 的分支。

1 个不稳定版本

使用旧的 Rust 2015

0.2.0 2020 年 8 月 22 日

#3#alex

MIT/Apache

13KB
164

buf_stream

用于读写缓存的 I/O 流

关于

buf_stream 是 Alex Chrichton 的 bufstream 的分支。

用法

[dependencies]
buf_stream = "0.2"

Tokio

此包通过 tokio 功能支持 tokio 的 AsyncRead + AsyncWrite 特性。当使用异步 I/O 时,请确保在丢弃流之前正确刷新流,因为丢弃时的 I/O 可能会导致恐慌。同样,您应避免使用 BufStream::into_inner


lib.rs:

用于分离缓冲流的包。

此包提供了一个 BufStream 类型,它为 Read + Write 类型提供读写两部分的缓冲。每一部分都完全独立于另一部分缓冲,这不一定总是所需的。例如 BufStream<File> 可能具有意外的语义。

用法

[dependencies]
bufstream = "0.1"
use std::io::prelude::*;
use std::net::TcpStream;
use bufstream::BufStream;


let stream = TcpStream::connect("localhost:4000").unwrap();
let mut buf = BufStream::new(stream);
buf.read(&mut [0; 1024]).unwrap();
buf.write(&[0; 1024]).unwrap();

异步 I/O

此包可以通过此包的 tokio 功能选择性地支持通过 Tokio 堆栈 的异步 I/O 流。

bufstream = { version = "0.2", features = ["tokio"] }

所有方法都内部支持可能在不准备执行特定操作时返回 ErrorKind::WouldBlock 的流。

但是,请注意在使用这些对象时需要小心。特别是,Tokio 运行时要求在丢弃流之前完全刷新数据。为了与阻塞流兼容,所有流在丢弃时都会刷新/写入,这并不总是进行 I/O 的合适时间。但是,如果在丢弃之前刷新 I/O 流,则这些操作将不会执行任何操作。

依赖项

~105KB