1use std::path::Path;
2
3pub fn nuke_dir<P: AsRef<Path>>(path: P) -> Result<(), String> {
6 use std::fs;
7 let path = path.as_ref();
8 for entry in
9 fs::read_dir(path).map_err(|e| format!("{}: {e}", path.display()))?
10 {
11 let entry = entry.map_err(|e| format!("{}: {}", path.display(), e))?;
12 let path = entry.path();
13
14 let file_type = entry
15 .file_type()
16 .map_err(|e| format!("{}: {}", path.display(), e))?;
17
18 if file_type.is_dir() {
19 nuke_dir(&path)?;
20 fs::remove_dir(&path)
21 .map_err(|e| format!("{}: {}", path.display(), e))?;
22 } else {
23 fs::remove_file(&path)
24 .map_err(|e| format!("{}: {}", path.display(), e))?;
25 }
26 }
27
28 Ok(())
29}