跳到主要内容

copy_bidirectional

搜索

函数 copy_bidirectional 

Source
pub async fn copy_bidirectional<A, B>(
    a: &mut A,
    b: &mut B,
) -> Result<(u64, u64)>
展开描述

ab 之间双向复制数据。

此函数返回一个 future,它将从两个流中读取数据, 将读取到的数据写入对应的另一个流。 这一过程在两个方向上并发进行。

如果在一个流上观察到 EOF, 则将在另一个流上调用 shutdown(), 并停止从该流读取数据。 另一方向的数据复制将继续进行。

一旦两个方向的通信都被关闭, 此 future 将成功完成。 当 reader 报告 EOF 时,一个方向被关闭, 此时将在对应的 writer 上调用 shutdown()。 完成后, 它将按顺序返回一个元组, 包含从 a 复制到 b 的字节数和从 b 复制到 a 的字节数。

默认情况下,它使用两个 8 KB 缓冲区在 ab 之间传输字节。若要设置自己的缓冲区大小, 请使用 copy_bidirectional_with_sizes()

§Errors

如果 ab 上的任何 IO 操作返回错误, 此 future 将立即返回错误。 在这种情况下,从任一流读取的某些数据可能会丢失(未写入另一流)。

§Return value

返回一个元组,包含从 a 复制到 b 的字节数和从 b 复制到 a 的字节数。