7 个版本
新版本 0.1.6 | 2024 年 8 月 9 日 |
---|---|
0.1.5 | 2024 年 6 月 2 日 |
0.1.4 | 2024 年 5 月 4 日 |
0.1.2 | 2024 年 2 月 18 日 |
#400 在 异步
84 每月下载量
在 3 个 Crates 中使用 (直接使用 2 个)
9KB
103 行
read_until_slice
tokio io-util 功能提供了该方法
pub async fn read_until(&mut self, delimiter: u8, buf: Vec<u8>) -> Result<usize>
在 impl AsyncBufRead + Unpin
上。
从这个异步缓冲读取器中读取,直到遇到 EOF 或分隔符。
虽然很有用,但它限制为单个字节的分隔符。
此 crate 通过使用切片作为分隔符而不是单个字节来扩展这一点。
pub async fn read_until_slice(&mut self, delimiter: &[u8], buf: Vec<u8>) -> Result<usize>
在相同的 impl AsyncBufRead + Unpin
上。
示例
// Open socket
let stream = TcpStream::connect(addr)
.await
.expect("could not connect to remote address");
// Split stream into reader and writer halves
let (reader, mut writer) = split(stream);
// Buffer read stream
let mut reader = BufReader::new(reader);
...
// Read until new line delimiter into buffer
let mut buffer = vec![];
let delimiter = b"\r\n";
let n = reader.read_until(delimiter, &mut buffer)
.await
.expect("could not read from socket");
assert_eq!(n, buffer.len());
if buffer.ends_with(delimiter) {
println!("end of line delimiter reached");
} else {
println!("end of stream reached");
}
依赖关系
~2.1–3MB
~49K SLoC