aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.rs28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/main.rs b/src/main.rs
index 8727003..53a1301 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -5,14 +5,20 @@ use std::{
};
use clap::Parser;
-use color_eyre::eyre::{bail, eyre, Context, Result};
+use color_eyre::{
+ eyre::{bail, eyre, Context, Result},
+ Report,
+};
use hittekaart::{
gpx::{self, Compression},
renderer,
};
use indicatif::{MultiProgress, ProgressBar, ProgressDrawTarget, ProgressStyle};
use is_terminal::IsTerminal;
-use rayon::ThreadPoolBuilder;
+use rayon::{
+ iter::{IndexedParallelIterator, IntoParallelRefIterator, ParallelIterator},
+ ThreadPoolBuilder,
+};
#[derive(Parser, Debug, Clone)]
#[command(author, version, about)]
@@ -69,13 +75,17 @@ fn main() -> Result<()> {
bar.set_prefix("Reading GPX files");
let mut tracks = Vec::new();
- for file in &args.files {
- let compression = Compression::suggest_from_path(file)
- .ok_or_else(|| eyre!("Could not determine format for {file:?}"))?;
- let data = gpx::extract_from_file(file, compression)?;
- tracks.push(data);
- bar.inc(1);
- }
+ args.files
+ .par_iter()
+ .map(|file| {
+ let compression = Compression::suggest_from_path(file)
+ .ok_or_else(|| eyre!("Could not determine format for {file:?}"))?;
+ let data = gpx::extract_from_file(file, compression)?;
+ bar.inc(1);
+ Ok::<_, Report>(data)
+ })
+ .collect_into_vec(&mut tracks);
+ let tracks = tracks.into_iter().collect::<Result<Vec<_>>>()?;
bar.finish();
ensure_output_directory(&args.output_directory)?;