Macro iter_comprehensions::sum
source · macro_rules! sum { ($t:ty : $e:expr; $($rest:tt)*) => { ... }; ($t:ty : $($rest:tt)*) => { ... }; ($e:expr; $($rest:tt)*) => { ... }; ($($rest:tt)*) => { ... }; }
Expand description
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 sum in case it cannot be inferred automatically.
use iter_comprehensions::sum;
assert_eq!(sum!(usize : i; i in 1..=10), 55);