fn process_directory(
dir_path: &str,
files_before: &mut ZipArchive<Cursor<Vec<u8>>>,
files_after: &mut ZipArchive<Cursor<Vec<u8>>>,
processed_files: &mut HashSet<String>,
patches: &mut Vec<(String, Operation)>,
diff_algorithm: DiffAlgorithm,
compress_algorithm: CompressAlgorithm,
) -> Result<(), Error>