I think that instead of this, my solution would be to have each function that depends on dt to accumulate the dt themselves, and reset it at their individual periods.
A Rust trait with an associated const would help with this:
trait TimeDependentFn {
const PERIOD: f32;
type Output;
fn call(&self, dt: f32) -> Self::Output;
}