summaryrefslogtreecommitdiff
path: root/src/bin
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2020-12-25 14:34:11 +0200
committerLars Wirzenius <liw@liw.fi>2020-12-25 15:35:11 +0200
commit085cd3c968de88a07251237232eb51c3d6ba26d8 (patch)
tree1a5749d500a49e6308ce43ecc56c990057ddec87 /src/bin
parentcf529f12223f571739ae33a4e2e9d31c27ba692d (diff)
downloadsummain-rs-085cd3c968de88a07251237232eb51c3d6ba26d8.tar.gz
refactor: use rayon to get some parallelism
Diffstat (limited to 'src/bin')
-rw-r--r--src/bin/summain.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/bin/summain.rs b/src/bin/summain.rs
index 0abe2f5..20ca738 100644
--- a/src/bin/summain.rs
+++ b/src/bin/summain.rs
@@ -1,4 +1,5 @@
use anyhow::Context;
+use rayon::prelude::*;
use std::path::{Path, PathBuf};
use structopt::StructOpt;
use summain::ManifestEntry;
@@ -6,8 +7,11 @@ use summain::ManifestEntry;
fn main() -> anyhow::Result<()> {
let mut opt = Opt::from_args();
opt.pathnames[..].sort();
- for pathname in opt.pathnames {
- report(&pathname).with_context(|| format!("{}", pathname.display()))?
+ let v: Vec<anyhow::Result<ManifestEntry>> =
+ opt.pathnames.par_iter().map(|p| manifest(&p)).collect();
+ for m in v {
+ let m = m?;
+ println!("{}", serde_yaml::to_string(&m)?);
}
Ok(())
}
@@ -18,8 +22,6 @@ struct Opt {
pathnames: Vec<PathBuf>,
}
-fn report(pathname: &Path) -> anyhow::Result<()> {
- let e = ManifestEntry::new(pathname)?;
- println!("{}", serde_yaml::to_string(&e)?);
- Ok(())
+fn manifest(path: &Path) -> anyhow::Result<ManifestEntry> {
+ ManifestEntry::new(path).with_context(|| format!("{}", path.display()))
}