pub async fn copy<'a, R, W>(reader: &'a mut R, writer: &'a mut W) -> Result<u64>
Available on crate feature
io-util
only.Expand description
Asynchronously copies the entire contents of a reader into a writer.
This function returns a future that will continuously read data from
reader
and then write it into writer
in a streaming fashion until
reader
returns EOF or fails.
On success, the total number of bytes that were copied from reader
to
writer
is returned.
This is an asynchronous version of std::io::copy
.
A heap-allocated copy buffer with 8 KB is created to take data from the
reader to the writer, check copy_buf
if you want an alternative for
AsyncBufRead
. You can use copy_buf
with BufReader
to change the
buffer capacity.
§Errors
The returned future will return an error immediately if any call to
poll_read
or poll_write
returns an error.
§Examples
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[..]);