Predicate to determine when to stop.
The input range to iterate over.
The element to stop at.
Determines whether the element for which the given predicate is true should be included in the resulting range (No.openRight), or not (Yes.openRight).
An input range that iterates over the original range's elements, but ends when the specified predicate becomes true. If the original range is a forward range or higher, this range will be a forward range.
import std.algorithm.comparison : equal; import std.typecons : No; int[] a = [ 1, 2, 4, 7, 7, 2, 4, 7, 3, 5]; assert(equal(a.until(7), [1, 2, 4])); assert(equal(a.until(7, No.openRight), [1, 2, 4, 7]));
Lazily iterates range until the element e for which pred(e, sentinel) is true.
This is similar to takeWhile in other languages.