thread 'main' panicked at src\main.rs:7:59:
called `Result::unwrap()` on an `Err` value: Os { code: 5, kind: PermissionDenied, message: "access denied" }
fn main() {
copy_dir_to(Path::new("./haha"), Path::new("./lala")).unwrap();
}
fn copy_dir_to(src: &Path, dst: &Path) -> Result<(), std::io::Error> {
if !src.is_dir() { fs::create_dir(dst)? }
for entry_result in src.read_dir()? {
let entry = entry_result?;
let file_type = entry.file_type()?;
copy_to(src, &file_type, &dst.join(entry.file_name()))?
}
Ok(())
}
fn copy_to(src: &Path, file_type: &FileType, dst: &Path) -> Result<(), std::io::Error> {
if file_type.is_file() {
fs::copy(src, dst)?;
return Ok(());
}
if file_type.is_dir() {
copy_dir_to(src, dst)?;
return Ok(());
}
return Err(io::Error::new(io::ErrorKind::Other, format!("DO NOT KNOW HOW TO COPY: {}", src.display())));
}
I wasn't able to get a permission denied error, but I did get your code to crash on Windows with a stack overflow, or return a "too many open files" error on Linux. Compared to the book's code on Github, this seems to be because your code does copy_to(src, ...), but the example code does copy_to(&entry.path, ....
Can you double-check that your code is equivalent to the code from the book?