pub fn copy<R, W, F>(reader: R, writer: W, report_progress: F) -> Copy<R, W, F> ⓘExpand description
Creates a future which copies all the bytes from one object to another while reporting the progress.
The returned future will copy all the bytes read from reader into the
writer specified. After each write, report_progress is called with the
current amount of copied bytes. This future will only complete once the
reader has hit EOF and all bytes have been written to and flushed from the
writer provided.
On success the number of bytes is returned.
§Errors
This function will return an error immediately if any call to
poll_fill_buf, poll_write or poll_flush returns an error.
§Example
let mut reader: &[u8] = b"hello";
let mut writer: Vec<u8> = vec![];
let progress = AtomicU64::new(0);
let report_progress = |amt| progress.store(amt, Ordering::Relaxed);
async_copy_progress::copy(&mut reader, &mut writer, report_progress).await?;
assert_eq!(&b"hello"[..], &writer[..]);
assert_eq!(5, progress.load(Ordering::Relaxed));