VirtualTime::RangeHelper
Class methods
Returns how many values the range or stepped range yields, or nil for a value whose size is not knowable arithmetically.
In Int64, since a range over Int32 bounds can hold more values than
Int32 counts.
Returns whether the stepped range yields no value at all.
Worked out from the bounds rather than by stepping, which would mean copying the iterator -- it is stateful -- on every comparison.
Returns the smallest value the stepped range yields that is at least
element, or nil when it yields none.
Returns whether the stepped range yields element.
Arithmetic rather than iteration, for the same reason #intersect? is:
a stepped range over a second's worth of nanoseconds holds hundreds of
millions of values, and walking them to answer a single comparison is
exactly what the plain ranges beside it are careful never to do.
Returns whether the two ranges have at least one value in common.
This is the O(1) counterpart of intersecting them by iteration, which matters because VirtualTime ranges can be enormous (e.g. nanoseconds).
Returns the last value included in range, or nil if it contains no values.
Returns value ready to be iterated from its first element.
Steppable::StepIterators are stateful and are consumed by iteration,
so they must be copied before every traversal; everything else is
returned as-is.
Returns value ready to be iterated from its first element.
Steppable::StepIterators are stateful and are consumed by iteration,
so they must be copied before every traversal; everything else is
returned as-is.