Функция create_ dir_ all
pub async fn create_dir_all(path: impl AsRef<Path>) -> Result<()>
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