Функция copy_ bidirectional
pub async fn copy_bidirectional<A, B>(
a: &mut A,
b: &mut B,
) -> Result<(u64, u64)>
io-util.Копирует данные в обоих направлениях между a и b.
Эта функция возвращает future, который читает из обоих потоков, записывая прочитанные данные в противоположный поток. Чтение и запись выполняются одновременно в обоих направлениях.
Если в одном потоке обнаружен EOF, для другого будет вызван shutdown(), а чтение из этого потока прекратится. Копирование данных в другом направлении продолжится.
Future успешно завершится, когда передача данных в обоих направлениях будет остановлена. Передача в одном направлении останавливается, когда читатель сообщает об EOF; в этот момент для соответствующего писателя вызывается shutdown(). По завершении функция вернёт кортеж: количество байтов, скопированных из a в b, и количество байтов, скопированных из b в a, именно в таком порядке.
По умолчанию для передачи байтов между a и b используются два буфера размером 8 КБ. Чтобы задать собственный размер буферов, используйте copy_bidirectional_with_sizes().
Ошибки
Future немедленно вернёт ошибку, если любая операция ввода-вывода над a или b завершится ошибкой. В этом случае часть данных, прочитанных из любого потока, может быть потеряна (не записана в другой поток).
Возвращаемое значение
Возвращает кортеж: количество байтов, скопированных a в b, и количество байтов, скопированных b в a.
MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/io/fn.copy_bidirectional.html