fix(simulation): resolve clippy warnings in atlas modules

Replace HashMap/HashSet with BTreeMap/BTreeSet per D-030 determinism
rule. Fix while_let_loop, map_or simplification, collapsible if,
unsigned_abs casting, iterator indexing, and redundant wildcard arms.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-02 22:52:15 +02:00
co-authored by Claude Opus 4.6
parent 718fcd0510
commit 6582ee4cca
6 changed files with 33 additions and 40 deletions
+7 -7
View File
@@ -69,7 +69,7 @@ fn role_row(economic_role: &str) -> usize {
"transit_hub" => 6,
"research" => 7,
"military" => 8,
"residential" | _ => 9,
_ => 9,
}
}
@@ -132,8 +132,8 @@ fn hungarian(cost: &[Vec<f32>]) -> Vec<usize> {
c[i][j] = cost[i][j];
}
// Pad extra columns with high cost so overflow cities pick them last.
for j in m..sz {
c[i][j] = f32::MAX / 2.0;
for item in c[i].iter_mut().take(sz).skip(m) {
*item = f32::MAX / 2.0;
}
}
// Pad extra rows with 0 cost (dummy workers).
@@ -228,8 +228,8 @@ fn synthetic_attractor(
let r = (dr * MIN_SPACING).min(grid_h as u16 - 1);
let c = (dc * MIN_SPACING).min(grid_w as u16 - 1);
let ok = placed.iter().all(|p| {
let dr2 = (p.position.0 as i32 - r as i32).abs() as u16;
let dc2 = (p.position.1 as i32 - c as i32).abs() as u16;
let dr2 = (p.position.0 as i32 - r as i32).unsigned_abs() as u16;
let dc2 = (p.position.1 as i32 - c as i32).unsigned_abs() as u16;
dr2.max(dc2) >= MIN_SPACING
});
if ok {
@@ -379,7 +379,7 @@ pub fn match_cities(
// -------------------------------------------------------------------------
// Phase 4: Synthetic overflow — all remaining cities
// -------------------------------------------------------------------------
let placed_ids: std::collections::HashSet<u64> =
let placed_ids: std::collections::BTreeSet<u64> =
placements.iter().map(|p| p.city_id).collect();
for city in cities {
@@ -401,7 +401,7 @@ pub fn match_cities(
// -------------------------------------------------------------------------
// Phase 5: Name fulfillment check
// -------------------------------------------------------------------------
let placed_ids: std::collections::HashSet<u64> =
let placed_ids: std::collections::BTreeSet<u64> =
placements.iter().map(|p| p.city_id).collect();
for city in cities {
if !placed_ids.contains(&city.city_id) {