Spec-Zone.ru › Tokio

Функция copy_buf

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

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

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

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

Это альтернатива tokio::io::copy для средств чтения AsyncBufRead, не требующая выделения дополнительного буфера, поскольку AsyncBufRead позволяют получить доступ к внутреннему буферу средства чтения.

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

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

Ошибки

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

Примеры

use tokio::io;

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

io::copy_buf(&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_buf.html

Spec-Zone.ru

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