Crate for managing run loop timing

Is there a good crate for handling the abstraction of run loop timing? I've seen a couple, and timer's schedule_repeating is the closest I've found, but I'm hoping for something more flexible. I'd like the ability to separate the logic of what happens inside the loop from when it's run such that the loop can be specified as constant delay (do the work, wait a fixed duration), constant period (do the work, wait the time remaining if any) or constant load factor (do the work, wait a time proportional to the time the work took).

These are all pretty straightforward to implement, I think. I'm happy to do it myself if others would find it useful, but I thought it would be good to first check whether a crate like this exists.