Spec-Zone.ru › Tokio

Функция copy

pub async fn copy<'a, R, W>(reader: &'a mut R, writer: &'a mut W) -> Result<u64>
where R: AsyncRead + Unpin + ?Sized, W: AsyncWrite + Unpin + ?Sized,
Доступно только при включённой функции crate io-util.

Асинхронно копирует всё содержимое средства чтения в средство записи.

Эта функция возвращает future, который будет непрерывно считывать данные из reader, а затем записывать их в writer потоковым способом, пока reader не вернёт EOF или не завершится с ошибкой.

В случае успеха возвращается общее количество байтов, скопированных из reader в writer.

Это асинхронная версия std::io::copy.

Для передачи данных от средства чтения к средству записи создаётся буфер копирования размером 8 КБ, выделенный в куче. Если вам нужна альтернатива для AsyncBufRead, см. copy_buf. Вы можете использовать copy_buf с BufReader, чтобы изменить размер буфера.

Когда использовать асинхронные альтернативы вместо SyncIoBridge

Если вы хотите использовать std::io::copy с синхронным потребителем (например, hasher или компрессором), рассмотрите возможность использования асинхронных альтернатив вместо обёртывания средства чтения в SyncIoBridge. Подробные примеры и рекомендации см. в документации SyncIoBridge.

Ошибки

Возвращённый future немедленно вернёт ошибку, если любой вызов poll_read или poll_write завершится с ошибкой.

Примеры

use tokio::io;

let mut reader: &[u8] = b"hello";
let mut writer: Vec<u8> = vec![];

io::copy(&mut reader, &mut writer).await?;

assert_eq!(&b"hello"[..], &writer[..]);

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/io/fn.copy.html

Spec-Zone.ru

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