[][src]Crate iter_comprehensions

Compact iterator comprehensions.

The macro iter! can be used to generate a sequence of elements using generating sequences and conditional filters. There are two general forms

iter!(EXPR; VAR in RANGE, COND, ...)
iter!(VAR in RANGE, COND, ..., EXPR)

where EXPR the generator expression, VAR is a variable RANGE a some sequence, e.g. 0..n. COND is an arbitrary boolean expression. Each RANGE and COND term can use the variables declared in preceeding range expressions.

Example

The expression $\{ 5i + j : i \in \{0..4\}, j \in \{0..4\}, i < j \}$ is equivalent to the following form

use iter_comprehensions::iter;
assert_eq!(iter!(4*i + j; i in 0..5, j in 0..5, i < j).collect::<Vec<_>>(),
           vec![1, 2, 3, 4, 6, 7, 8, 11, 12, 16]);

Macros

iter

An iterator comprehension.

product

A product expression.

sum

A sum expression.

vector

A iterator comprehensions generating a vector.

Functions

productiter
sumiter