gpt4 book ai didi

rust - 用async-std大块读取

转载 作者:行者123 更新时间:2023-12-03 11:44:16 25 4
gpt4 key购买 nike

我正在尝试实现类似于使用AsynchronousByteChannel在Java中读取文件的操作

   AsynchronousFileChannel channel = AsynchronousFileChannel.open(path...

channel.read(buffer,... new CompletionHandler<Integer, ByteBuffer>() {
@Override
public void completed(Integer result) {
...use buffer
}
也就是说,请阅读操作系统提供的内容,进行处理,要求更多的内容等等。
用async_std实现此目的最直接的方法是什么?

最佳答案

您可以使用read特性的 async_std::io::Read 方法:

use async_std::prelude::*;

let mut reader = obtain_read_somehow();
let mut buf = [0; 4096]; // or however large you want it

// read returns a Poll<Result> so you have to handle the result
loop {
let byte_count = reader.read(&mut buf).await?;
if byte_count == 0 {
// 0 bytes read means we're done
break;
}
// call whatever handler function on the bytes read
handle(&buf[..byte_count]);
}

关于rust - 用async-std大块读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65127131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com