Spec-Zone.ru › Tokio

Функция create_dir_all

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

Рекурсивно создаёт каталог и все его родительские компоненты, если они отсутствуют.

Это асинхронная версия std::fs::create_dir_all.

Поведение, зависящее от платформы

В настоящее время эта функция соответствует функции mkdir в Unix и функции CreateDirectory в Windows. Обратите внимание, что это может измениться в будущем.

Ошибки

Эта функция вернёт ошибку в следующих ситуациях, но этот список не является исчерпывающим:

  • Если какой-либо каталог в пути, указанном в path, ещё не существует и его не удалось создать. Конкретные условия возникновения ошибок при создании каталога (после того, как установлено, что он не существует) описаны в документации к fs::create_dir.

Если конечный компонент в path уже существует и является каталогом, функция также завершится успешно, не вернув ошибку.

Следует отметить исключение: если какой-либо из каталогов, указанных в path, не удалось создать из-за того, что его одновременно создавал другой процесс, такой случай считается успешным. Иными словами, гарантируется, что параллельные вызовы create_dir_all из нескольких потоков или процессов не завершатся с ошибкой из-за гонки друг с другом.

Примеры

use tokio::fs;

#[tokio::main]
async fn main() -> std::io::Result<()> {
    fs::create_dir_all("/some/dir").await?;
    Ok(())
}

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

Spec-Zone.ru

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