Метод 1: использование модуля std::fs
Самый простой способ создать каталог, если он не существует, — использовать модуль std::fs. Вот пример:
use std::fs;
fn main() {
let dir_path = "path/to/directory";
if let Err(err) = fs::create_dir_all(dir_path) {
eprintln!("Failed to create directory: {}", err);
} else {
println!("Directory created successfully!");
}
}
Метод 2: использование модуля std::path
Другой подход — использование модуля std::path, который предоставляет удобные методы для работы с путями. Вот пример:
use std::path::Path;
fn main() {
let dir_path = Path::new("path/to/directory");
if !dir_path.exists() {
if let Err(err) = std::fs::create_dir_all(dir_path) {
eprintln!("Failed to create directory: {}", err);
} else {
println!("Directory created successfully!");
}
}
}
Метод 3: использование структуры std::fs::DirBuilder
Структура std::fs::DirBuilderпозволяет настроить процесс создания каталогов. Вот пример:
use std::fs::DirBuilder;
fn main() {
let dir_path = "path/to/directory";
let dir_builder = DirBuilder::new();
if let Err(err) = dir_builder.create(dir_path) {
eprintln!("Failed to create directory: {}", err);
} else {
println!("Directory created successfully!");
}
}
Метод 4: использование функции std::fs::metadata
Вы также можете использовать функцию std::fs::metadata, чтобы проверить, существует ли каталог перед его созданием. Вот пример:
use std::fs;
fn main() {
let dir_path = "path/to/directory";
if let Ok(metadata) = fs::metadata(dir_path) {
if metadata.is_dir() {
println!("Directory already exists!");
} else {
eprintln!("A file with the same name already exists!");
}
} else {
if let Err(err) = fs::create_dir_all(dir_path) {
eprintln!("Failed to create directory: {}", err);
} else {
println!("Directory created successfully!");
}
}
}