pub fn copy<R, W>(reader: &mut R, writer: &mut W) -> Result<u64>where
R: Read + ?Sized,
W: Write + ?Sized,
Expand description
将 reader 的全部内容复制到 writer 中。
此函数将连续从 reader
读取数据,然后以流方式将其写入 writer
,直到 reader
返回 EOF。
成功后,将返回从 reader
复制到 writer
的字节总数。
如果要将一个文件的内容复制到另一个文件并且您正在使用文件系统路径,请参见 fs::copy
函数。
Errors
如果对 read
或 write
的任何调用返回错误,则此函数将立即返回错误。
此函数将处理 ErrorKind::Interrupted
的所有实例,并重试底层操作。
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(())
}
Run特定于平台的行为
在 Linux (包括 Android) 上,如果可能的话,此函数使用 copy_file_range(2)
、sendfile(2)
或 splice(2)
系统调用在文件描述符之间直接移动数据。
请注意,特定于平台的行为 将来可能会改变。