pub async fn copy_bidirectional<A, B>(
a: &mut A,
b: &mut B,
) -> Result<(u64, u64)>展开描述
在 a 和 b 之间双向复制数据。
此函数返回一个 future,它将从两个流中读取数据, 将读取到的数据写入对应的另一个流。 这一过程在两个方向上并发进行。
如果在一个流上观察到 EOF,
则将在另一个流上调用 shutdown(),
并停止从该流读取数据。
另一方向的数据复制将继续进行。
一旦两个方向的通信都被关闭,
此 future 将成功完成。
当 reader 报告 EOF 时,一个方向被关闭,
此时将在对应的 writer 上调用 shutdown()。
完成后,
它将按顺序返回一个元组,
包含从 a 复制到 b 的字节数和从 b 复制到 a 的字节数。
默认情况下,它使用两个 8 KB 缓冲区在 a 和 b
之间传输字节。若要设置自己的缓冲区大小,
请使用 copy_bidirectional_with_sizes()。
§Errors
如果 a 或 b 上的任何 IO 操作返回错误,
此 future 将立即返回错误。
在这种情况下,从任一流读取的某些数据可能会丢失(未写入另一流)。
§Return value
返回一个元组,包含从 a 复制到 b 的字节数和从 b 复制到 a 的字节数。