Spec-Zone.ru › Tokio

Функция copy_bidirectional

pub async fn copy_bidirectional<A, B>(
    a: &mut A,
    b: &mut B,
) -> Result<(u64, u64)>
where A: AsyncRead + AsyncWrite + Unpin + ?Sized, B: AsyncRead + AsyncWrite + Unpin + ?Sized,
Доступна только при включённой возможности crate 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API