Process files in parallel

This commit is contained in:
Marc Plano-Lesay 2024-10-11 16:11:55 +11:00
parent 04f03b4efc
commit 20e10eecb4

View file

@ -1,6 +1,6 @@
use clap::{Parser, ValueHint};
use image::DynamicImage;
use log::info;
use log::*;
use pdf_writer::{Content, Filter, Finish, Name, Pdf, Rect, Ref};
use rayon::prelude::*;
use std::ffi::OsStr;
@ -166,14 +166,19 @@ fn convert_directory(
directory: &Path,
output_dir: &Path,
) -> Result<(), Box<dyn std::error::Error>> {
info!("Walking {:?}", directory);
debug!("Walking {:?}", directory);
let mut entries = Vec::new();
for entry in WalkDir::new(directory) {
let entry = entry?;
let path = entry.path();
if path.is_file() && path.extension() == Some(OsStr::new("cbz")) {
convert_cbz(path, output_dir)?;
entries.push(entry);
}
}
entries
.par_iter()
.for_each(|entry| convert_cbz(entry.path(), output_dir).unwrap());
Ok(())
}