Функция remove_dir_all
Функция remove_dir_all удаляет директорию
по указанному пути вместе со всеми вложенными
файлами и поддиректориями. Параметром функция
принимает путь к удаляемой директории. Если путь
указывает на файл, а не на директорию, будет
возвращена ошибка. Функция возвращает Ok(())
при успешном удалении и Err в случае ошибки.
Синтаксис
std::fs::remove_dir_all(path)
Пример
Давайте создадим директорию с вложенными файлами
и поддиректориями, а затем полностью удалим её
с помощью remove_dir_all:
use std::fs;
fn main()
{
fs::create_dir_all("test_dir/sub_dir").unwrap();
fs::write("test_dir/file.txt", "abcde").unwrap();
fs::write("test_dir/sub_dir/nested.txt", "12345").unwrap();
let res = fs::remove_dir_all("test_dir");
println!("{:?}", res);
}
Результат выполнения кода:
Ok(())
Пример
Давайте попробуем удалить директорию, которой не существует, и посмотрим на возвращаемую ошибку:
use std::fs;
fn main()
{
let res = fs::remove_dir_all("missing_dir");
println!("{:?}", res);
}
Результат выполнения кода:
Err(Os { code: 2, kind: NotFound, message: "No such file or directory" })
Пример
Давайте проверим, что директория действительно
удалена, с помощью Path::exists:
use std::fs;
use std::path::Path;
fn main()
{
fs::create_dir_all("test_dir/sub_dir").unwrap();
fs::remove_dir_all("test_dir").unwrap();
let res = Path::new("test_dir").exists();
println!("{}", res);
}
Результат выполнения кода:
false
Смотрите также
-
функция
remove_dir,
которая удаляет только пустую директорию -
функция
remove_file,
которая удаляет файл по указанному пути -
функция
create_dir_all,
которая рекурсивно создаёт директорию со всеми родителями -
функция
read_dir,
которая возвращает итератор по содержимому директории