| 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(()) | |
| } |