pub async fn copy_buf<'a, R, W>(
reader: &'a mut R,
writer: &'a mut W,
) -> Result<u64>展开描述
以异步方式将一个 reader 的全部内容复制到 writer 中。
此函数返回一个 future,它将持续从 reader
读取数据,然后以流式方式将其写入 writer,
直到 reader 返回 EOF 或失败。
成功时,会返回从 reader 复制到 writer 的总字节数。
这是 tokio::io::copy 针对 AsyncBufRead reader
的替代方案,无需额外的缓冲区分配,
因为 AsyncBufRead 允许访问
reader 的内部缓冲区。
§When to use async alternatives instead of SyncIoBridge
如果你希望将 std::io::copy 与同步消费者
(如 hasher 或压缩器)一起使用,请考虑使用异步替代方案,
而不是用 SyncIoBridge 包装 reader。
有关在散列、压缩和数据解析方面的详细示例和指南,
请参阅 SyncIoBridge 文档。
§Errors
如果对 poll_fill_buf 或 poll_write 的任何调用返回错误,
则返回的 future 将立即返回错误。
§示例
use tokio::io;
let mut reader: &[u8] = b"hello";
let mut writer: Vec<u8> = vec![];
io::copy_buf(&mut reader, &mut writer).await?;
assert_eq!(b"hello", &writer[..]);