From e6f1e7c117e6160458a23e5ad2120c5ba76d7ae1 Mon Sep 17 00:00:00 2001 From: Lucas Schwiderski Date: Wed, 10 Jul 2024 21:54:51 +0200 Subject: [PATCH] Fix load order verification With `.enumerate()` after `.filter()`, the resulting indices didn't properly map back to the overall mod list anymore. But the checks afterwards relied on that. Moving the `.enumerate()` before the `.filter()` makes sure that the indices are correct. --- crates/dtmm/src/controller/app.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/crates/dtmm/src/controller/app.rs b/crates/dtmm/src/controller/app.rs index 44842e0..d5b397c 100644 --- a/crates/dtmm/src/controller/app.rs +++ b/crates/dtmm/src/controller/app.rs @@ -162,18 +162,20 @@ where pub(crate) fn check_mod_order(state: &ActionState) -> Result<()> { if tracing::enabled!(tracing::Level::DEBUG) { - let order = state.mods.iter().filter(|i| i.enabled).enumerate().fold( - String::new(), - |mut s, (i, info)| { + let order = state + .mods + .iter() + .enumerate() + .filter(|(_, i)| i.enabled) + .fold(String::new(), |mut s, (i, info)| { s.push_str(&format!("{}: {} - {}\n", i, info.id, info.name)); s - }, - ); + }); tracing::debug!("Mod order:\n{}", order); } - for (i, mod_info) in state.mods.iter().filter(|i| i.enabled).enumerate() { + for (i, mod_info) in state.mods.iter().enumerate().filter(|(_, i)| i.enabled) { for dep in &mod_info.depends { let dep_info = state.mods.iter().enumerate().find(|(_, m)| m.id == dep.id);