diff --git a/src/engine/targets.rs b/src/engine/targets.rs index b93ff80..109b011 100644 --- a/src/engine/targets.rs +++ b/src/engine/targets.rs @@ -85,8 +85,10 @@ pub fn refresh_zone_runtime_target(zone: &mut Zone, schedules: &[Schedule], hous return; } - zone.effective_mode = configured_mode; + // Resolve the target while `target_mode` may still borrow `configured_mode`. + // After this call the borrow ends, so `configured_mode` can be moved into the runtime state. let (preset, target) = resolve_zone_target(zone, schedule, target_mode); + zone.effective_mode = configured_mode; zone.active_preset = preset; zone.effective_setpoint = Some(target); }