std.algorithm.searching.Until/until
- multiple declarations
Function until
Lazily iterates range
until the element e
for which
pred(e, sentinel)
is true.
This is similar to takeWhile
in other languages.
Parameters
Name | Description |
---|---|
pred | Predicate to determine when to stop. |
range | The input range to iterate over. |
sentinel | The element to stop at. |
openRight | Determines whether the element for which the given predicate is
true should be included in the resulting range (No ), or
not (Yes ). |
Returns
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.
Example
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]));
Struct Until
Lazily iterates range
until the element e
for which
pred(e, sentinel)
is true.
struct Until(alias pred, Range, Sentinel)
if (isInputRange!Range);
This is similar to takeWhile
in other languages.
Constructors
Name | Description |
---|---|
this
(input, sentinel, openRight)
|
Properties
Name | Type | Description |
---|---|---|
empty [get]
|
bool | |
front [get]
|
auto | |
save [get]
|
Until |
Methods
Name | Description |
---|---|
popFront
()
|
Parameters
Name | Description |
---|---|
pred | Predicate to determine when to stop. |
range | The input range to iterate over. |
sentinel | The element to stop at. |
openRight | Determines whether the element for which the given predicate is
true should be included in the resulting range (No ), or
not (Yes ). |
Returns
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.
Example
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]));