On this page
Function std::io::copy
pub fn copy<R, W>(reader: &mut R, writer: &mut W) -> Result<u64>
where
R: Read + ?Sized,
W: Write + ?Sized,
Copies the entire contents of a reader into a writer.
This function will continuously read data from reader
and then write it into writer
in a streaming fashion until reader
returns EOF.
On success, the total number of bytes that were copied from reader
to writer
is returned.
If you want to copy the contents of one file to another and you’re working with filesystem paths, see the fs::copy
function.
Errors
This function will return an error immediately if any call to read
or write
returns an error. All instances of ErrorKind::Interrupted
are handled by this function and the underlying operation is retried.
Examples
use std::io;
fn main() -> io::Result<()> {
let mut reader: &[u8] = b"hello";
let mut writer: Vec<u8> = vec![];
io::copy(&mut reader, &mut writer)?;
assert_eq!(&b"hello"[..], &writer[..]);
Ok(())
}
Platform-specific behavior
On Linux (including Android), this function uses copy_file_range(2)
, sendfile(2)
or splice(2)
syscalls to move data directly between file descriptors if possible.
Note that platform-specific behavior may change in the future.
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/io/fn.copy.html