pub async fn copy<'a, R, W>(reader: &'a mut R, writer: &'a mut W) -> Result<u64>展开描述
以异步方式将一个 reader 的全部内容复制到 writer 中。
此函数返回一个 future,它将持续从 reader
读取数据,然后以流式方式将其写入 writer,
直到 reader 返回 EOF 或失败。
成功时,会返回从 reader 复制到 writer 的总字节数。
这是 std::io::copy.
会创建一个 8 KB 的堆分配复制缓冲区,用于将数据从
reader 传递到 writer,如果想要
AsyncBufRead 的替代方案,
请查看 copy_buf。
你可以将 copy_buf 与 BufReader 一起使用
以更改缓冲区容量。
§When to use async alternatives instead of SyncIoBridge
如果你希望将 std::io::copy 与同步消费者
(如 hasher 或压缩器)一起使用,请考虑使用异步替代方案,
而不是用 SyncIoBridge 包装 reader。
有关详细信息,请参阅 SyncIoBridge 文档。
§Errors
如果对 poll_read 或 poll_write 的任何调用返回错误,
则返回的 future 将立即返回错误。
§示例
use tokio::io;
let mut reader: &[u8] = b"hello";
let mut writer: Vec<u8> = vec![];
io::copy(&mut reader, &mut writer).await?;
assert_eq!(&b"hello"[..], &writer[..]);