For Robot times, the underlying type is a u64 representing nanoseconds.
It is always positive to simplify the reasoning on the user side.
Represents a time range.
A point-in-time wall-clock measurement.
Homebrewed Option<CuDuration>
to avoid using 128bits just to represent an Option.
Represents a time range with possible undefined start or end or both.
A running Robot clock.
The clock is a monotonic clock that starts at an arbitrary reference time.
It is clone resilient, ie a clone will be the same clock, even when mocked.
A mock clock that can be controlled by the user.