Удаление дерева папок в Rust
Удаление дерева убирает папку вместе с тем, что внутри. Отдельно снимать каждый файл не нужно: система обходит содержимое и убирает все уровни. Команда возвращает результат без значения при удаче.
Создадим вложенную структуру и снесем ее:
use std::fs;
use std::io;
fn wipe_tree() -> io::Result<()> {
fs::remove_dir_all("data")?;
Ok(())
}
fn main() -> io::Result<()> {
fs::create_dir_all("data/sub")?;
fs::write("data/note.txt", "x")?;
fs::write("data/sub/inner.txt", "y")?;
wipe_tree()?;
match fs::metadata("data") {
Ok(_) => println!("still there"),
Err(err) => println!("{}", err),
}
Ok(())
}
Обычное удаление каталога без команды на все дерево дает сбой, если внутри есть файлы:
use std::fs;
fn main() {
match fs::remove_dir("data") {
Ok(()) => println!("removed"),
Err(err) => println!("{}", err),
}
}
Дан путь:
let path = "docs";
Создайте папку с файлом, удалите дерево и проверьте, что путь больше не находится.
Дан путь:
let path = "data";
Сравните удаление одного уровня и удаление всего дерева.
Вынесите удаление дерева в функцию
с исходом и вызовите ее из main.