diff --git a/src/bin/minedmap/main.rs b/src/bin/minedmap/main.rs index d0714ef..3aef0f8 100644 --- a/src/bin/minedmap/main.rs +++ b/src/bin/minedmap/main.rs @@ -24,7 +24,7 @@ fn main() -> Result<()> { let config = Config::new(args); let regions = RegionProcessor::new(&config).run()?; - TileRenderer::new(&config).run(®ions)?; + TileRenderer::new(&config).run(regions.iter().copied())?; Ok(()) } diff --git a/src/bin/minedmap/region_processor.rs b/src/bin/minedmap/region_processor.rs index 6072636..661c92a 100644 --- a/src/bin/minedmap/region_processor.rs +++ b/src/bin/minedmap/region_processor.rs @@ -1,4 +1,4 @@ -use std::path::Path; +use std::{collections::BTreeSet, path::Path}; use anyhow::{Context, Result}; @@ -117,7 +117,7 @@ impl<'a> RegionProcessor<'a> { /// Iterates over all region files of a Minecraft save directory /// /// Returns a list of the coordinates of all processed regions - pub fn run(self) -> Result> { + pub fn run(self) -> Result> { let read_dir = self.config.region_dir.read_dir().with_context(|| { format!( "Failed to read directory {}", @@ -128,7 +128,7 @@ impl<'a> RegionProcessor<'a> { fs::create_dir_all(&self.config.processed_dir)?; fs::create_dir_all(&self.config.light_dir)?; - let mut ret = Vec::new(); + let mut ret = BTreeSet::new(); for entry in read_dir.filter_map(|entry| entry.ok()).filter(|entry| { // We are only interested in regular files @@ -150,7 +150,7 @@ impl<'a> RegionProcessor<'a> { ); } - ret.push(coords); + ret.insert(coords); } Ok(ret) diff --git a/src/bin/minedmap/tile_renderer.rs b/src/bin/minedmap/tile_renderer.rs index ef23547..02376c7 100644 --- a/src/bin/minedmap/tile_renderer.rs +++ b/src/bin/minedmap/tile_renderer.rs @@ -80,10 +80,10 @@ impl<'a> TileRenderer<'a> { }) } - pub fn run(self, regions: &[TileCoords]) -> Result<()> { + pub fn run(self, regions: impl IntoIterator) -> Result<()> { fs::create_dir_all(&self.config.map_dir)?; - for &coords in regions { + for coords in regions { if let Err(err) = self.render_tile(coords) { eprintln!("Failed to render tile {:?}: {:?}", coords, err,); }