[][src]Macro iter_comprehensions::sum

macro_rules! sum {
    ($t:ty : $e:expr; $($rest:tt)*) => { ... };
    ($t:ty : $($rest:tt)*) => { ... };
    ($e:expr; $($rest:tt)*) => { ... };
    ($($rest:tt)*) => { ... };
}

A sum expression.

The two possible macro calls

sum!(EXPR; i1 in RANGE1, COND2, ..., ik in RANGEk)
sum!(i1 in RANGE1, COND2, ..., ik in RANGEk, EXPR)

are roughly equivalent to

map!(EXPR; i1 in RANGE1, COND2, ..., ik in RANGEk).sum()
map!(i1 in RANGE1, COND2, ..., ik in RANGEk, EXPR).sum()

Example

The following expression corresponds to the mathematical expression $\sum_{i=1}^{10} i$.

use iter_comprehensions::sum;
assert_eq!(sum!(i in 1..=10, i), 55);
assert_eq!(sum!(i; i in 1..=10), 55);

It is also possible to specify the return type of the product in case it cannot be infered automatically.

use iter_comprehensions::sum;
assert_eq!(sum!(usize : i; i in 1..=10), 55);