About the discussion of how to implement the delay and that using core::time::duration isn't wanted because of it's size. Could we create a duration trägt that mirrors the API of core duration. Any Delay Provider (eg HALs) then providers an impl of the trait in the corresponding size as needed. A 1kb Ram 1 kHz MCU might then expose a duration trait with only 2 bytes, while a the hal for Linux just re-exports the core duration. Of course that would need a default implementation for core duration. libs using delays already need to be passed the actual type of the delay. The delay could then expose the associated duration with an associated type. If smaller times are requested than representable it should round up. There would be a need for a way to signal the maximum duration, so that libs could error out if the type isn't long enough.