Function tokio::io::copy_buf

source ·
pub async fn copy_buf<'a, R, W>(
    reader: &'a mut R,
    writer: &'a mut W
) -> Result<u64>
where R: AsyncBufRead + Unpin + ?Sized, W: AsyncWrite + Unpin + ?Sized,
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 a tokio::io::copy alternative for AsyncBufRead readers with no extra buffer allocation, since AsyncBufRead allow access to the reader’s inner buffer.


The returned future will finish with an error will return an error immediately if any call to poll_fill_buf or poll_write returns an error.


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[..]);