blob: a60fde71afce0c6cf8267f22426cbf56051a1a91 [file] [log] [blame]
use std::fs;
use std::io;
use std::path::Path;
fn remove_file_or_dir_all<P: AsRef<Path>>(path: P) -> io::Result<()> {
match fs::remove_file(&path) {
// Unfortunately, there is no ErrorKind for EISDIR
Err(e) if e.raw_os_error() == Some(libc::EISDIR) =>
fs::remove_dir_all(&path),
r => r,
}
}
pub fn _remove_dir_contents<P: AsRef<Path>>(path: P) -> Result<(), io::Error> {
for entry in fs::read_dir(path)? {
let entry_path = entry?.path();
remove_file_or_dir_all(&entry_path)?;
}
Ok(())
}