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]));