Function std::io::copy

1.0.0 · source ·
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

如果对 readwrite 的任何调用返回错误,则此函数将立即返回错误。 此函数将处理 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) 系统调用在文件描述符之间直接移动数据。

请注意,特定于平台的行为 将来可能会改变