Main issue is probably when copying the content to the file, not during the file creation, but handle both cases just to be sure
@@ -85,21 +85,23 @@ impl Cache {
let path = self.file_path(file);
mkdir_existing(path.parent().unwrap()).unwrap();
- let file_create = File::create(path);
- match file_create {
- Ok(mut cache_file) => {
- ::std::io::copy(contents, &mut cache_file).unwrap();
- }
- Err(_error) => {
+ let mut cache_file = File::create(path).unwrap_or_else(|_e| {
::std::fs::remove_dir_all(&self.root.join("files")).unwrap();
mkdir_existing(&self.root.join("files")).unwrap();
let path = self.file_path(file);
mkdir_existing(path.parent().unwrap()).unwrap();
- let mut cache_file = File::create(path).unwrap();
- ::std::io::copy(contents, &mut cache_file).unwrap();
- }
- };
+ File::create(path).unwrap()
+ });
+ ::std::io::copy(contents, &mut cache_file).unwrap_or_else(|_e| {
+ ::std::fs::remove_dir_all(&self.root.join("files")).unwrap();
+ mkdir_existing(&self.root.join("files")).unwrap();
+
+ let path = self.file_path(file);
+ mkdir_existing(path.parent().unwrap()).unwrap();
+ let mut file = File::create(path).unwrap();
+ ::std::io::copy(contents, &mut file).unwrap()
+ });
}
}
}
