Spec-Zone.ru › Tokio

Функция read

pub async fn read(path: impl AsRef<Path>) -> Result<Vec<u8>>
Доступно только при включённой возможности crate fs.

Считывает всё содержимое файла в вектор байтов.

Это асинхронная версия функции std::fs::read.

Эта вспомогательная функция позволяет использовать File::open и read_to_end с меньшим количеством импортов и без промежуточной переменной. Она предварительно выделяет буфер на основе размера файла, если он известен, поэтому обычно работает быстрее, чем чтение в вектор, созданный с помощью Vec::new().

Эта операция выполняется путём запуска эквивалентной блокирующей операции в отдельном пуле потоков с помощью spawn_blocking.

Ошибки

Эта функция вернёт ошибку, если path ещё не существует. Также могут возвращаться другие ошибки в соответствии с поведением OpenOptions::open.

Также будет возвращена ошибка, если при чтении возникнет ошибка типа, отличного от ErrorKind::Interrupted.

Поддержка io_uring

В Linux для выполнения системных вызовов также можно использовать io_uring. Чтобы включить io_uring, необходимо указать флаг --cfg tokio_unstable во время компиляции, включить функцию cargo io-uring и задать параметр среды выполнения Builder::enable_io_uring.

Поддержка io_uring в настоящее время является экспериментальной, поэтому её поведение может измениться или она может быть удалена в будущих версиях.

Примеры

use tokio::fs;
use std::net::SocketAddr;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + 'static>> {
    let contents = fs::read("address.txt").await?;
    let foo: SocketAddr = String::from_utf8_lossy(&contents).parse()?;
    Ok(())
}

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

Spec-Zone.ru

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